我想测试删除方法。 删除方法在模拟服务中调用(不用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);
我弄错了。
不调用基类中的Equals方法。 列表中的对象使用moq进行模拟。
Mock<TypeOfObject> objectMock = new Mock<TypeOfObject>();
objectMock.SetupGet(pf => pf.BusinessId).Returns(guid);
return objectMock.Object;
我如何设置模拟调用基类的Equals-Methode并且Contains-method返回true?
提前致谢。
答案 0 :(得分:5)
你可以让mock通过设置Mock.CallBase属性调用你的Equals方法,例如:
Mock<TypeOfObject> objectMock = new Mock<TypeOfObject>();
objectMock.SetupGet(pf => pf.BusinessId).Returns(guid);
objectMock.CallBase = true;
return objectMock.Object;
答案 1 :(得分:0)
由于你的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;
}
}