我对使用依赖注入感兴趣,但是我对应该如何处理未考虑DI的外部库感到困惑。
例如,如果我有一些代码可以构造项目范围内的对象,则可以使用一个接口,然后创建模拟版本以及这些版本的具体版本。
但是,相同的代码也可能使用外部库来写入数据库或调用API或其他方法。外部库可能仅对此提供具体实现。
这意味着我的代码中混合了具体内容和抽象内容,这将迫使我与其余代码同时测试外部库。
我是否应该为所有外部类创建包装器,以便可以注入模拟版本?这似乎是很多工作。
最佳答案
如果必须创建具体的第三方依赖关系的模拟来隔离自己的单元,则可以使用模拟工具(例如使用工具的Mockito)来轻松地做到这一点。
单元测试应该告知并加强您的设计决策,而不是推动它们,并且您应该能够快速编写它们,以将大部分精力集中在实际代码的设计和实现上。像Mockito这样的现代框架使这成为可能。