137

目的是Verifiable()什么?

如果我验证 aMock并忽略它,它仍然会验证SetUp.

编辑:我因此使用VerifyAll()了验证所有内容的原因。更改为Verify()仅我.Verifiable() SetUp的 s 后正在检查。

4

2 回答 2

91

附录:正如另一个答案所述,目的.Verifiable是将 aSetup加入一组“延迟Verify(...)调用”,然后可以通过mock.Verify().

OP 的澄清清楚地表明这是目标,唯一的问题是弄清楚它为什么不起作用,但正如@Liam 所敦促的那样,答案也应该真正涉及到这一点:-关键用例尽我所能见:

  • 保持 amock.Setup()和之间的 DRYnessmock.Verify
  • 允许从实际Verify调用本身断开验证的配置(例如,您可以在另一个帮助方法中设置它)

...回到我的回答,它简洁有效地表示“要小心,因为通常认为实现这些目标对过度依赖此类结构的测试的易读性和可维护性的影响超过了上述专业人士”

原文:请注意,在可能的情况下,应该遵循AAA布局,因此应该在工作完成后进行显式调用,而不是与 a或mock.Verify( expression )mock.Setup( ... ).Verifiable()mock.Verify()mock.VerifyAll()尽可能配对(信用: @kzu)。

于 2009-11-13T10:49:32.337 回答
62

当在Verify()测试结束时调用该方法时,如果没有调用任何标记为可验证的期望,则异常是thrown

VerifyAll()不检查可验证的期望。

于 2009-06-11T11:33:40.200 回答