模拟抽象类一开始似乎很吸引人,但是抽象类的构造函数中的一些更改可能会破坏使用抽象类模拟的单元测试。所以单元测试隔离不是100%。我的意思是没有人能保证抽象类的构造函数是简单的。(我的意思是不要抛出,不要调用 DB 或类似的奇怪东西)。我知道构造函数应该很简单,但我不能保证它会一直保持简单。
我们遗留的代码库很重抽象类,我不太喜欢模拟抽象类。这是我更喜欢接口或抽象类的包装接口的主要原因。有没有办法围绕基类构造函数的调用?老实说,我从未在 TDD 期间创建过抽象类,但我无法更改系统的遗留部分。
我偏向于接口,但我想知道我提到的问题是真实的,还是可以绕过的。