[英]Mock an object with a constructor - Rhino Mocks
How do I mock an object with a constructor using Rhino Mocks? 如何使用Rhino Mocks使用构造函数模拟对象?
For example how would this object be mocked... 例如,如何嘲笑这个对象......
public class Foo : IFoo
{
private IBar bar;
public Foo (IBar bar)
{
this.bar = bar
}
public DoSomeThingAwesome()
{
//awesomeness happens here
}
}
You don't mock Foo
- you mock IFoo
. 你不模仿
Foo
- 你嘲笑IFoo
。 To test Foo
itself, you mock IBar
and pass the mock into the constructor. 要测试
Foo
本身,您可以模拟IBar
并将模拟传递给构造函数。
You should try to avoid having things which rely on IFoo
explicitly constructing instances of Foo
: they should either be given a factory if IFoo
somehow, or have an IFoo
explicitly passed to them. 你应该尽量避免让依赖于
IFoo
东西显式地构造Foo
实例:如果IFoo
以某种方式被赋予工厂,或者将IFoo
明确地传递给它们。
var myIFoo = MockRepository.GenerateStub<IFoo>();
你可以检查发生的真棒
myIFoo.AssertWasCalled(f => f.DoSomethingAwesome());
It's been awhile since I used Rhino but I believe you can do: 自从我使用Rhino以来已经有一段时间,但我相信你可以做到:
mockRespository.StrictMock<Foo>( ibarVariable )
However it won't really work unless all of Foo's members are virtual. 然而,除非Foo的所有成员都是虚拟的,否则它不会真正起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.