假设ConcreteService是我唯一需要的非测试实现。提取接口(或使其方法/属性为虚拟)是否可以仅仅为了能够测试依赖于它的对象?否则,每次我想测试依赖它的东西时,我都必须新建依赖项,直到它分支(此时我可以注入模拟)。
答案 0 :(得分:2)
这完全可以。
我甚至可以说,即使你没有进行测试,在早期引入接口也会有很多好处,而且通常是首选。
通过在项目生命周期的早期对接口进行编码,调用ConcreteService的代码可以调用接口,然后如果您想要引入服务的新实现,则可以减少所需的更改量。用它。
答案 1 :(得分:1)
不完全确定设计是什么。听起来无论如何都需要对抽象进行测试,然后对它进行接口是有意义的。