2008-10-02 77 views
3

雖然我googling /閱讀這個答案,我想我也會問這裏。Moq'ing一個界面

我有一個類是一個SDK的包裝。該類接受一個I​​Loader對象,並使用ILoader對象創建一個投射到ISmallBusinessInstance對象中的ISBAObject。我只是試圖用Moq來嘲笑這種行爲。

[TestMethod] 
    public void Test_Customer_GetByID() 
    { 
     var mock = new Mock<ILoader>(); 

     var sbainst = new Mock<ISbaObjects>(); 

     mock.Expect(x => x.GetSbaObjects("")).Returns(sbainst); 


    } 

編譯器錯誤讀取錯誤:1的最佳重載方法匹配「Moq.Language.IReturns.Returns(Microsoft.BusinessSolutions.SmallBusinessAccounting.Loader.ISbaObjects)」有一些無效參數

是什麼去這裏?我希望ISbaObjects的模擬能夠毫無問題地返回。

回答

8

您需要使用sbainst.Object,因爲sbinst不是ISbaObjects的實例 - 它只是模擬部分。

+1

咄*拍打頭部*。很簡單,謝謝 – 2008-10-02 20:32:53

2

更新,正確的代碼

[TestMethod] 
public void Test_Customer_GetByID() 
{ 
    var mock = new Mock<ILoader>(); 

    var sbainst = new Mock<ISbaObjects>(); 

    mock.Expect(x => x.GetSbaObjects("")).Returns(sbainst.Object); 


}