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的期望。