单元测试 – 我应该在单元测试时模拟所有依赖项吗?

前端之家收集整理的这篇文章主要介绍了单元测试 – 我应该在单元测试时模拟所有依赖项吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的班级有依赖,我在单元测试中嘲笑.我在一个对我来说没什么意义的地方得到了一个空引用异常.

我刚才意识到这是因为我没有设置我的模拟依赖.此依赖项已经过测试,但它不会连接到文件系统或数据源之类的任何内容.

我只想在这个新类中测试我的新代码,但我想在这种情况下最好不要模拟.

这个结论是否正确?

正确.你应该模仿依赖于任何持久性或外部性的东西,以防止测试依赖于任何持久性或外部性.

如果依赖性不依赖于任何持久性或外部性,那么通过模拟它获得的唯一好处是即使依赖性错误,测试也能正常工作 – 但这假设模拟正常工作.为此你需要:

>编写一个完全模拟依赖关系的模拟.
>编写一个模拟,模拟将在测试中使用的特定情况的依赖关系.

第一个选择是彻头彻尾的荒谬 – 为什么你的模拟比原来的依赖更好?毕竟,可以安全地假设在原始依赖项上投入了比在模拟中更多的努力……

第二个选项意味着您的mock知道实现的确切细节 – 否则您将不知道实现如何使用依赖项,因此您不知道如何模拟这些特定用途.这意味着测试不能用于单元测试的主要目的之一 – 在更改实现后验证代码是否正常工作.

模拟的缺点是太大而且优点太小 – 特别是考虑到你总是可以运行依赖项的测试来检查它是否正常工作……

猜你在找的设计模式相关文章