JUnit Easymock 意外方法调用

标签 junit methods call easymock

我正在尝试在带有 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/

相关文章:

java - 如何以更少的费用从java中的方法返回两个值(1.Collection,2.Single Boolean value)?

javascript - chain call 和 apply 在一起是什么意思?

java - 如果数据库包含现有数据,如何仅在 Activity 中调用一次方法?

java - 如何调用签名为 "public double getMedian(double[]list) {//code}"的方法

function - postgresql中的调用函数

java - 启动 Maveryx 测试应用程序时如何指定环境变量?

java - 运行集成测试时嵌入 MongoDB

java - 在 JUNIT 中按数据库查询执行组

junit - Jupiter Extensions 可以/应该用于自定义 JUnit5 引擎吗?

java - Selenium - Java//将浏览器实例传递给另一个方法