Moq'ing接口

时间:2020-03-06 15:02:53  来源:igfitidea点击:

在搜寻/阅读此答案时,我想我也会在这里问。

我有一个可作为SDK包装器的类。该类接受一个I​​Loader对象,并使用ILoader对象创建一个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的模拟物毫无问题地返回。

解决方案

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

更新,正确的代码

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

    var sbainst = new Mock<ISbaObjects>();

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

}