有时只需要紧密耦合对象即可。例如,一个CsvFile
类可能需要与CsvRecord
该类(或ICsvRecord
接口)紧密配合。
但是,从我过去的经验中学到,测试驱动开发的主要宗旨之一是“永远不要一次测试一个以上的类”。表示您应该使用ICsvRecord
模拟或存根,而不是的实际实例CsvRecord
。
但是,在尝试这种方法之后,我注意到嘲笑CsvRecord
该类可能会变得有些毛茸茸。这使我得出以下两个结论之一:
- 编写单元测试很困难!那是代码的味道!重构!
- 模拟每个依赖项是不合理的。
当我用实际CsvRecord
实例替换模拟对象时,事情进行得更加顺利。当寻找其他人的想法时,我偶然发现了这篇博客文章,该文章似乎支持上面的第二点。对于自然紧密耦合的对象,我们不必太担心模拟。
我会偏离轨道吗?以上假设2有不利之处吗?我是否真的应该考虑重构设计?