4

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

我有一个类是 SDK 的包装器。该类接受一个 ILoader 对象并使用 ILoader 对象创建一个 ISBAObject,该 ISBAObject 被强制转换为一个 ISmallBusinessInstance 对象。我只是想用 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 的 Mock 能够毫无问题地返回。

4

2 回答 2

9

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

于 2008-10-02T20:24:20.127 回答
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);


}
于 2008-10-03T22:42:27.050 回答