Verifiable()的目的是什么?
Verifiable()
如果我验证了一个 Mock并且省略了这个,它仍然验证了 SetUp。
Mock
SetUp
编辑: 我正在使用 VerifyAll(),因此原因一切都被验证。改为 Verify()后,只有我的 .Verifiable() SetUp被检查。
VerifyAll()
Verify()
.Verifiable()
当在测试结束时调用 Verify()方法时,如果任何标记为可验证的期望都没有被调用,那么异常就是 thrown。
thrown
VerifyAll()不检查可验证的期望。
附录: 正如另一个答案所述,.Verifiable的目的是将一个 Setup登记到一组“延迟的 Verify(...)调用”中,这些“延迟的 Verify(...)调用”随后可以通过 mock.Verify()触发。
.Verifiable
Setup
Verify(...)
mock.Verify()
OP 的澄清清楚地表明这是目标,唯一的问题是弄清楚为什么它不能工作,但是作为@Liam 的催促,答案也应该真正触及到这一点:- 我所能看到的关键用例是:
mock.Setup()
mock.Verify
Verify
回到我的回答,简洁有效地说“要小心,因为通常认为,实现这些目标对过于依赖这些结构的测试的易读性和可维护性的影响超过了上述优点”
原件: 请注意,在可能的情况下,一个应该遵循 AAA布局,因此一个应该是 在工作完成后进行明确的 ABC0呼叫,而不是 ABC1与 ABC2或 mock.VerifyAll()配对在任何可能的地方(信用: @ kzu)。
mock.VerifyAll()