JUnit Easymock Unexpected method call
我正在尝试在带有EasyMock的JUnit中设置测试,但遇到了一个小问题,似乎无法解决。我希望这里有人可以帮忙。
这是我要测试的方法的简化版本:
1 2 3 4 5 6 7 8 9 10 | 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模拟了
当JUnit击
我不介意在测试中嘲笑该dao并在其上使用
我不选择哪个,因为它是在要测试的方法的上下文中有条件创建的。
任何人都不得不处理这个问题并以某种方式解决了吗?
谢谢。
您也可以使用
如果无法在测试代码中引用对象本身,则可以将
它可能比匹配确切的参数要严格一些,但是如果您对此满意,请尝试一下。在声明预期的方法调用时,请记住将强制类型转换为
如果仅想通过此调用,anyObject()匹配器将非常有用,但是如果您实际上要验证构造的对象是否符合您的预期,则可以使用Capture。看起来像:
1 2 3 4 5 6 7 8 | Capture<OtherObj> capturedOtherObj = new Capture<OtherObj>(); mockDao.insert(capture(capturedOtherObj)); replay(mockDao); objUnderTest.myMethod(); assertThat("captured what you expected", capturedOtherObj.getValue().getId(), equalTo(expectedId)); |
此外,PowerMock可以期望构造一个对象,因此您可以根据需要进行研究。
还请注意,如果使用