Fab*_*iro 8 unit-testing mocking
我的班级有依赖,我在单元测试中嘲笑.我在一个对我没有多大意义的地方得到了一个空引用异常.
我刚才意识到这是因为我没有设置我的模拟依赖.此依赖项已经过测试,但它不会连接到文件系统或数据源之类的任何内容.
我只想在这个新类中测试我的新代码,但我想在这种情况下最好不要去模拟.
这个结论是否正确?
这听起来像是在你的情况下工作,但一般情况下,存根或模拟的唯一原因是获取外部数据源,而不是测试的头发.其他原因包括
正确.你应该模仿依赖于持久性或外部性的东西,以防止测试依赖于持久性或外部性.
如果依赖关系不依赖于任何持久性或外部性,那么通过模拟它获得的唯一好处是即使依赖性错误,测试也能正常工作 - 但假设模拟正常工作.为此你需要:
编写一个完全模拟依赖关系的模拟.
编写一个模拟,模拟将在测试中使用的特定情况的依赖关系.
第一种选择是彻头彻尾的荒谬 - 为什么你的模拟比原来的依赖更好?毕竟,可以安全地假设在原始依赖中投入了比在模拟中更多的努力......
第二个选项意味着您的mock知道实现的确切细节 - 否则您将不知道实现如何使用依赖项,因此您不知道如何模拟这些特定用途.这意味着测试不能满足单元测试的主要目的之一 - 在更改实现后验证代码是否正常工作.
模拟的缺点太大而且优点太小 - 特别是考虑到你总是可以运行依赖项的测试来检查它是否正常工作......
| 归档时间: |
|
| 查看次数: |
4366 次 |
| 最近记录: |