在JMockit中模拟测试类中的私有方法

4
在我的测试类(CUT)中,有一个私有方法“getConnection”,它是一个ejb。我想测试CUT的另一个方法,但这个方法将在执行之前失败。
我尝试像下面展示的那样,但是“invoke”是错误的。我不想调用该方法,我想对其进行存根。但是如何实现?('connection'是一个存根)
new NonStrictExpectations() {
  {
    invoke(archivingBean, "getConnection");result = connection;
  }
};
archivingBean.moveCreditBasic2Archive(new Date());
1个回答

7
您的测试是正确的,只是缺少对模拟类型的声明。在这种情况下,是EJB类。
通常情况下,模拟类型是完全模拟的(所有方法)。在这种情况下,您可以为测试方法声明一个@Mocked MyEJB archivingBean参数。
另一方面,对于部分模拟,您可以使用NonStrictExpectations(Object...)构造函数,例如:
new NonStrictExpectations(archivingBean) {{ // <== note the argument here
    invoke(archivingBean, "getConnection"); result = connection;
}};

最新版本的jmockit似乎没有“invoke”方法。 - yuyue007
1
这些方法是从mockit.Deencapsulation类中进行静态导入的。 - Rogério

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接