使用moq时包含的问题

Tob*_*ias 0 c# moq contains equals

我想测试一个删除方法.删除方法在模拟服务中调用(不用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);

    }
Run Code Online (Sandbox Code Playgroud)

我打电话的时候

 serive.GetAll().Contains(objectInList);
Run Code Online (Sandbox Code Playgroud)

我弄错了.

不调用基类中的Equals方法.列表中的对象使用moq进行模拟.

 Mock<TypeOfObject> objectMock = new Mock<TypeOfObject>();
 objectMock.SetupGet(pf => pf.BusinessId).Returns(guid);
 return objectMock.Object;
Run Code Online (Sandbox Code Playgroud)

我如何设置模拟调用基类的Equals-Methode并且Contains-method返回true?

提前致谢.

Kon*_*hin 5

你可以让mock通过设置Mock.CallBase属性调用你的Equals方法为true,例如:


Mock<TypeOfObject> objectMock = new Mock<TypeOfObject>();
objectMock.SetupGet(pf => pf.BusinessId).Returns(guid);
objectMock.CallBase = true;
return objectMock.Object;