如果我的依赖项IObjectA
包含PropertyA
类型为IObjectB
的{{1}}公共方法Foo()
。
为了调用IObjectB
Foo()可以完成其中任何一个,这是正确的吗?
Verify()
“B”似乎更正确,但没有验证和反驳我的调试“一步一步”,“A”然而得到正确的结果。可以使用objectA查询其属性和用于调用的属性,即使它是一个模拟类型吗?
答案 0 :(得分:4)
为什么你认为B似乎更正确?
示例A说内部对象A检查PropertyA有foo调用它。
在这个例子中,objectA和objectB无论如何都没有绑在一起。因此,例子B在其当前形式中似乎具有误导性,因为它试图表明存在某种关系。
现在,如果您使用setup
将objectB分配给objectA,那么这两个示例都应该有效(因为您告诉Moq objectA如何与objectB相关)。执行此设置可创建您要验证的关系。
有些事情:
objectA.Setup(x => x.PropertyA).Returns(objectB)
这基本上说“当调用PropertyA时,给我回来对象B. ”