我想安排一个Spring实例对象作为Mock而不是正常构造的实例,以完成集成测试。
被模拟的对象不会被Spring注入成员变量,而是通过查询Spring上下文来访问。一个例子(供参考):
class Service {
public void doIt() {
Helper helper = new Helper();
helper.doIt();
}
}
class Helper {
public void doIt() {
BeanFactory factory = getBeanFactory(); // A function to get the bean factory
Target target = (Target)factory.getBean("target");
target.doIt();
}
}
class Target {
public void doIt() {
// Something interesting.
}
}
我想要Mock Target以验证对Service.doIt()的调用是否调用了Target.doIt()。
Helper的实例是动态的,即Helper不是Spring对象,只作为这两个接口之间的链接存在很短的时间。
我们使用(大)spring xml文件进行配置,因此最好避免多种测试配置。
如何模拟Target以便从Spring Bean工厂检索Mock?