2008-10-02 35 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); 


}