有没有办法在Java中使用JMock模拟对象构造?
例如,如果我有这样的方法:
public Object createObject(String objectType) {
if(objectType.equals("Integer") {
return new Integer();
} else if (objectType.equals("String") {
return new String();
}
}
...有没有办法模拟测试方法中对象构造的期望?
我希望能够对某些构造函数被调用的期望,而不是额外的代码来检查类型(因为它不会像我的例子那样复杂和简单).
所以代替:
assertTrue(a.createObject() instanceof Integer);
我可以期待某个构造函数被调用.只是为了使它更清洁,并以更易读的方式表达实际测试的内容.
请原谅这个简单的例子,我正在处理的实际问题有点复杂,但是期望会简化它.
更多背景:
我有一个简单的工厂方法,它创建包装器对象.被包装的对象可能需要在测试类中难以获得的参数(它是预先存在的代码),因此很难构造它们.
也许接近我实际想要的是:有没有办法一次性模拟整个类(使用CGLib),而没有指定每个方法来存根?
所以mock被包装在一个构造函数中,所以很明显可以在它上面调用方法,JMock是否能够动态模拟每个方法?
我的猜测是否定的,因为那会非常复杂.但是知道我正在咆哮错误的树也很有价值:-)
我唯一能想到的是在工厂对象上创建create方法,而不是模拟.
但是在模拟构造函数调用方面,没有.模拟对象预先假定对象的存在,而构造函数预先假定对象不存在.至少在java中,分配和初始化一起发生.