我正在尝试在带有 EasyMock 的 JUnit 中设置测试,但遇到了一个我似乎无法解决的小问题。我希望这里有人可以提供帮助。
这是我尝试测试的方法的简化版本:
public void myMethod() {
//(...)
Obj myObj = this.service.getObj(param);
if (myObj.getExtId() != null) {
OtherObj otherObj = new OtherObj();
otherObj.setId(myObj.getExtId());
this.dao.insert(otherObj);
}
//(...)
}
好的,所以使用 EasyMock 我 mock 了
service.getObj(myObj)
打电话,效果很好。当 JUnit 遇到
dao.insert(otherObj
时,我的问题就出现了) 称呼。 EasyMock 抛出 *Unexpected Method Call*
在上面。我不介意在我的测试中 mock 那个 dao 并使用
expectLastCall().once();
在它上面,但是假设我在插入时作为参数传递的“otherObj”有一个句柄......我当然不会,因为它是在被测试方法的上下文中有条件地创建的。
任何人都曾经不得不处理这个问题并以某种方式解决了它?
谢谢。
最佳答案
您也可以使用 EasyMock.isA(OtherObj.class)
为了多一点类型安全。
关于JUnit Easymock 意外方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2113816/