【发布时间】:2011-10-17 07:25:23
【问题描述】:
我想测试一个删除方法。 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);
我错了。
未调用基类中的 Equals 方法。 列表中的对象是用 moq 模拟的。
Mock<TypeOfObject> objectMock = new Mock<TypeOfObject>();
objectMock.SetupGet(pf => pf.BusinessId).Returns(guid);
return objectMock.Object;
如何设置基类的 Equals-Methode 被调用并且 Contains-method 返回 true 的模拟?
提前致谢。
【问题讨论】:
-
这行不通? objectMock .Setup(a => a.Equals("something")).Returns(true);
-
但是对于 equals 和 contains,我总是正确的?
-
@Tobias,不要忘记覆盖
GetHashCode和Equals!它可能不会解决这个问题,但它可能会阻止更多的问题。