我已经使用RhinoMocks有一段时间了,但刚开始研究Moq。我遇到了这个非常基本的问题,令我惊讶的是它并不能直接解决。假设我有以下类定义:
public class Foo
{
private IBar _bar;
public Foo(IBar bar)
{
_bar = bar;
}
..
}
现在我有一个测试,需要 Mock 发送给 Foo 的 IBar。在 RhinoMocks 中,我可以简单地像下面这样做,它可以正常工作:
var mock = MockRepository.GenerateMock<IBar>();
var foo = new Foo(mock);
然而,在Moq中,这个方法似乎并不像同样的方式工作。我正在按照以下方式进行:
var mock = new Mock<IBar>();
var foo = new Foo(mock);
然而,现在它失败了 - 告诉我“无法将'Moq.Mock'转换为'IBar'。我做错了什么? 使用Moq进行这样的操作的推荐方法是什么?
mock.Object
只在调用foo.Object
时初始化。我基本上要找的是能够将原始的Mock<IBar>
传递给Foo
的构造函数,在调用mock.Object
时被调用的能力。有没有办法实现这个? - Shimmy Weitzhandler