gpt4 book ai didi

c# - 最小起订量验证链接

转载 作者:行者123 更新时间:2023-11-30 15:40:14 27 4
gpt4 key购买 nike

如果我有一个依赖项 IObjectA,它包含类型为 IObjectBPropertyA,它有一个公共(public)方法 Foo()IObjectB 中。

为了 Verify() Foo() 被调用,可以做这些中的任何一个,这是正确的吗?

Mock<IObjectA> objectA = new Mock<IObjectA>();
Mock<IObjectB> objectB = new Mock<IObjectB>();

//A
objectA.Verify(x => x.PropertyA.Foo());

//B
objectA.Verify(x => x.PropertyA);
objectB.Verify(x => x.Foo());

“B”似乎更正确,但没有验证并与我的调试“单步执行”相矛盾,“A”却得到了正确的结果。是否可以询问 objectA 的属性以及用于调用的属性,即使它是模拟类型?

最佳答案

为什么你认为 B 似乎更正确?

示例 A 在对象 A 内部检查 PropertyA 是否调用了 foo。

在这个例子中,objectA 和 objectB 并没有捆绑在一起。因此,示例 B 目前的形式似乎具有误导性,因为它试图表明存在某种关系。

现在,如果您使用 setup 将 objectB 分配给 objectA,那么这两个示例都应该有效(因为您是在告诉 Moq objectA 与 objectB 的关系)。执行此设置会创建您要验证的关系。

类似的东西:

objectA.Setup(x => x.PropertyA).Returns(objectB)

这基本上是说“当 PropertyA 被调用时,将对象 B 还给我。

关于c# - 最小起订量验证链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9475602/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com