Tôi có một bài kiểm tra đơn vị trong đó tôi phải giả định một phương thức không ảo trả về kiểu bool
public class XmlCupboardAccess
{
public bool IsDataEntityInXmlCupboard(string dataId,
out string nameInCupboard,
out string refTypeInCupboard,
string nameTemplate = null)
{
return IsDataEntityInXmlCupboard(_theDb, dataId, out nameInCupboard, out refTypeInCupboard, nameTemplate);
}
}
Vì vậy, tôi có một đối tượng giả của XmlCupboardAccess
lớp và tôi đang cố gắng thiết lập giả cho phương thức này trong trường hợp thử nghiệm của mình như dưới đây
[TestMethod]
Public void Test()
{
private string temp1;
private string temp2;
private Mock<XmlCupboardAccess> _xmlCupboardAccess = new Mock<XmlCupboardAccess>();
_xmlCupboardAccess.Setup(x => x.IsDataEntityInXmlCupboard(It.IsAny<string>(), out temp1, out temp2, It.IsAny<string>())).Returns(false);
//exception is thrown by this line of code
}
Nhưng dòng này ném ngoại lệ
Invalid setup on a non-virtual (overridable in VB) member:
x => x.IsDataEntityInXmlCupboard(It.IsAny<String>(), .temp1, .temp2,
It.IsAny<String>())
Bất kỳ đề nghị làm thế nào để có được xung quanh ngoại lệ này?
virtual
. Moq không thể chế nhạo một loại cụ thể mà nó không thể ghi đè.
XmlCupboardAccess
?