Moq'ing一个界面

时间:2008-10-02 20:19:21

标签: c# .net tdd moq

当我在谷歌搜索/阅读这个答案时,我想我也会问这里。

我有一个类,它是SDK的包装器。该类接受ILoader对象并使用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的模拟。

2 个答案:

答案 0 :(得分:8)

你需要使用sbainst.Object,因为sbinst不是ISbaObjects的实例 - 它只是模拟部分。

答案 1 :(得分: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);


}