使用moq时包含的问题
本文关键字:问题 包含 moq 使用 | 更新日期: 2023-09-27 18:04:12
我想测试一个删除方法。delete方法在模拟服务中调用(而不是用moq模拟)。
服务管理一个对象列表。对象的类派生自覆盖equals()的基类。
public override bool Equals(object obj) {
if (obj == null || GetType() != obj.GetType()) {
return false;
}
BaseClass testObj = (BaseClass)obj;
return BusinessId.Equals(testObj.BusinessId);
}
当我呼叫
serive.GetAll().Contains(objectInList);
I get false.
不调用基类中的Equals方法。列表中的对象用moq模拟。
Mock<TypeOfObject> objectMock = new Mock<TypeOfObject>();
objectMock.SetupGet(pf => pf.BusinessId).Returns(guid);
return objectMock.Object;
我如何设置模拟,基类的equals方法被调用,contains方法返回true?
可以通过设置mock使mock调用Equals方法。CallBase属性为true,例如:
<>之前
Mock<TypeOfObject> objectMock = new Mock<TypeOfObject>();
objectMock.SetupGet(pf => pf.BusinessId).Returns(guid);
objectMock.CallBase = true;
return objectMock.Object;
由于GetType()检查而失败。您传递的对象是Mock
,而不是BaseClass
。
试试这个:
public override bool Equals(object obj)
{
if (obj != null && obj is BaseClass)
{
return BusinessId.Equals((obj as BaseClass).BusinessId);
}
else
{
return false;
}
}