2009-08-18 126 views
6

如何用Rhino Mocks构造函数来模拟对象?用构造函数模拟对象 - Rhino Mocks

例如怎么会变成这样的对象被嘲笑......

public class Foo : IFoo 
{ 
    private IBar bar; 
    public Foo (IBar bar) 
    { 
     this.bar = bar 
    } 

    public DoSomeThingAwesome() 
    { 
     //awesomeness happens here 
    } 

} 

回答

13

事你不嘲笑Foo - 你嘲笑IFoo。要测试Foo本身,您可以模拟IBar并将该模拟传递给构造函数。

你应该尽量避免的事情依赖于IFoo明确建设的Foo实例:他们应该要么如果IFoo莫名其妙地给出一个工厂,或者有明确IFoo传递给他们。

+3

好吧,现在你明白了。 :) – 2009-08-18 14:38:31

4
var myIFoo = MockRepository.GenerateStub<IFoo>(); 

,您可以检查迷死通过

myIFoo.AssertWasCalled(f => f.DoSomethingAwesome()); 
2

这是一段时间,因为我用犀牛,但我相信你可以这样做:

mockRespository.StrictMock<Foo>(ibarVariable)

但是它不会真的,除非所有Foo的成员的工作都是虚拟的。