Moq中的Verifiable()的目的是什么?
Verifiable()的目的是什么?
如果我validation一个Mock并将其保留,它仍然validation设置。
编辑:我正在使用VerifyAll()因此validation的一切的原因。 更改为Verify()只有我的.Verifiable() SetUp被检查。
附录:正如其他答案所述, .Verifiable的目的是将一个Setup成一组“延迟Verify(...)调用”,然后可以通过mock.Verify()来触发。
OP的澄清清楚地表明,这是目标,唯一的问题是搞清楚为什么它不起作用,但正如@Liam所指出的那样,答案也应该涉及到这一点: –关键用例尽可能多看到的是:
- 保持mock.Setup
mock.Setup()和mock.Verify之间的mock.Verify - 允许断开validation的configuration与实际的
Verify调用本身的连接(例如,你可以在另一个辅助方法中设置它)
…回到我的回答中,这个回答简单而有效地说:“要小心,因为实现这些目标的效果通常被认为超过了testing的易读性和可维护性,而这些testing过于依赖这样的结构”
原文:请注意,在可能的情况下,应该遵循AAA布局,因此应该在工作完成后进行明确的mock.Verify( expression )调用,而不是mock.Setup( ... ).Verifiable() mock.Verify()与mock.Verify()或mock.VerifyAll()配对 (信用: @kzu )。
当在testing结束时调用Verify()方法时,如果标记为可validation的任何期望没有被调用,则thrown 。
VerifyAll()不检查可validation的期望。