目的是Verifiable()什么?
如果我验证Mock并将其保留,它仍会验证SetUp.
编辑:我正在使用VerifyAll()因此验证一切的原因.更改为Verify()只有我的.Verifiable() SetUps被检查.
Rub*_*ink 78
ADDENDUM:正如另一个答案所述,其目的.Verifiable是将一个Setup"延期Verify(...)呼叫" 登记在一起,然后通过触发来触发mock.Verify().
OP的澄清清楚地表明这是目标,唯一的问题是弄清楚它为什么不起作用,但正如@Liam所说,答案也应该触及这一点: -尽可能关键用例看是:
mock.Setup()和之间的干燥mock.VerifyVerify调用本身的连接(例如,您可以在另一个辅助方法中设置它)...回到我的回答,简洁有效地说"小心,因为上述专业人士通常认为实现这些目标对于过度依赖这些结构的测试的易读性和可维护性的影响超过了"
ORIGINAL:请注意,在可能的情况下,应该遵循AAA布局,因此应该在完成工作后进行显式mock.Verify( expression )调用,而不是mock.Setup( ... ).Verifiable()与a mock.Verify()或者mock.VerifyAll()尽可能配对(credit:@kzu).
Suv*_*apa 47
当在Verify()测试结束时调用该方法时,如果没有调用标记为可验证的任何期望,则例外是thrown.
VerifyAll() 没有检查可验证的期望.