2009-08-18 129 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的成員的工作都是虛擬的。