我想了解 Exactly Verify 或 VerifyAll 的作用吗?
我正在搜索,我得到了以下关于使用 MOQ 的信息
Arrange
Mock
Set up expectations for dependencies
Set up expected results
Create class under test
Act
Invoke method under test
Assert
Assert actual results match expected results
Verify that expectations were met
那么 Verify 到底做了什么?我可以使用 Assert 测试所有内容,如果有任何失败,单元测试将失败?
verify 做了哪些额外的工作?它是 Assert 的替代品吗?
更多的解释会让我明白。
谢谢
最佳答案
断言 vs Mock.Verify
Assert 用于对被测类/对象/主题 (SUT) 进行检查。 验证用于检查是否通知或联系了 SUT 的合作者。
因此,如果您正在测试一个汽车对象,它有一个引擎作为协作者/依赖项。 在调用 car.PushStart() 之后,您将使用断言来查看 car.IsHumming 您将使用 Verify 来查看 _mockEngine.Ignition() 是否收到调用。
验证与验证全部
方法一:
- 明确设置您希望在后续 Act 步骤中对模拟协作者触发的所有操作
- 行动 - 做一些会触发操作的事情
- 调用 _mock.VerifyAll() :使您在 (1) 中设置的每个期望得到验证
方法二
- 行动 - 做一些会触发操作的事情
- call _mock.Verify(m => m.Operation) :验证 Operation 实际上被调用了。每次验证一次验证调用。它还允许您检查调用次数,例如恰好一次等
因此,如果您对 Mock 有多个操作,或者如果您需要模拟方法返回一个将被处理的值,那么 Setup + Act + VerifyAll 是可行的方法
如果您有几个通知需要检查,那么验证会更容易。
关于unit-testing - 最小起订量单元测试 - 断言与验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22602749/