Moq'ing接口
时间:2020-03-06 15:02:53 来源:igfitidea点击:
在搜寻/阅读此答案时,我想我也会在这里问。
我有一个可作为SDK包装器的类。该类接受一个ILoader对象,并使用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); }