如何在没有默认构造函数的情况下模拟对象上的方法?

rye*_*guy 8 c# moq

使用moq,如果我尝试直接模拟一个方法Foo,我得到这个:Invalid verify on a non-virtual (overridable in VB) member.

我的替代方案是模拟IFoo,它摆脱了上述问题,但后来我无法构造它因为Foo没有无参数的构造函数(Constructor arguments cannot be passed for interface mocks.).我能做什么?

Phi*_*ler 7

您应该可以毫无问题地模拟IFoo,并且在模拟接口时没有理由传递参数.你的IFoo模拟就是那个(一个模拟!),并且不知道Foo或任何真正的实现,所以传递构造函数参数是没有意义的.

编辑:我想补充说,如果一个接口存在,那么模拟一个接口几乎总是比模拟一个具体的实现更好.如果你只有一个具体的实现,你想要模拟它的事实可能意味着它将是一个很好的候选添加一个接口.