有没有办法在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)一举,没有指定的每一个方法来,踩灭?
所以模拟被包裹在一个构造,所以很明显的方法可以在其上被调用,是JMock的能够动态嘲笑出每种方法?
我的猜测是否定的,因为这会非常复杂。但知道我吠叫错了树也是有价值的:-)
回答你的工厂可能有它的每种类型的可能构造(整数工厂,一个String工厂等),但,你是对自己的工厂,这是于水火之中走向过于复杂。你断言instanceof测试可能是最好的方法。 – sblundy 2008-09-18 12:48:32