当您要验证是否已使用适当的参数调用了预期的方法时,将使用普通(或宽松)模拟。
严格的模拟用于验证仅调用了预期的方法,而没有其他方法被调用。将它们视为一种负面测试。
在大多数情况下,进行严格的模拟会使您的单元测试非常脆弱。即使您做了很小的内部实现更改,测试也开始失败。
但是,让我给您一个示例,说明它们可能有用的地方-测试诸如以下要求:
“如果缓存已经包含数据,则Get on a cache 不应访问该数据库”。
有多种方法可以使用松散的模拟来实现此目的,但是,相反,只需设置Mock<Database>零个预期函数调用即可很方便。然后,对该数据库的任何调用都将引发异常并通过测试。
您要使用严格模拟的另一种情况是Adapter或Wrapper设计模式。在这种模式下,您不会执行太多的业务逻辑。测试这些类的主要部分是是否使用正确的参数(而不是其他参数)调用了基础函数。在这种情况下,严格的模拟效果很好。
| 归档时间: |
|
| 查看次数: |
713 次 |
| 最近记录: |