我有一个 A 类,它在内部从 B 类实例化一个对象。第二类有很多外部副作用,例如它使用网络连接。
public class A {
private B b;
public A() {
b = new B(); // 3rd party class that calls out externally (e.g. to a db)
}
}
我想通过提供 B 类的模拟实现来对 A 类进行单元测试。我可以通过编写自己的类或使用 Mockito 和其他框架之类的东西轻松创建 B 的模拟版本,但是如何将这个模拟实现注入到类中A的密码?
我想我可以在 A 类的构造函数中请求 B 类的实例,但这看起来很难看。没有人真正需要知道 A 级是如何开展业务的。
Python 有一个“模拟”库,允许您在测试期间在运行时“修补”函数。Java有类似的东西吗?