将Moq模拟对象传递给构造函数
我一直在使用RhinoMocks,但刚开始研究Moq。 我有这个非常基本的问题,而且让我感到惊讶的是,这个问题并没有立即开始。 假设我有以下的类定义:
public class Foo { private IBar _bar; public Foo(IBar bar) { _bar = bar; } .. }
现在我有一个testing,我需要模拟发送给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的推荐方式是什么?
您需要传递模拟的对象实例
var mock = new Mock<IBar>(); var foo = new Foo(mock.Object);
您也可以使用模拟对象来访问实例的方法。
mock.Object.GetFoo();
moq文档
var mock = new Mock<IBar>().Object