当前位置: 首页 > 知识库问答 >
问题:

调用另一个私有方法的Power mocking私有方法

姬魁
2023-03-14

我试图模仿一个私有方法,如下所示。但是,在第4行,JUnit正在调用相关的validateLanguage方法,并且由于私有方法validateLanguage在调用其他方法时引发了异常,因此没有返回模拟值。我的理解是,使用PowerMock的JUnit应该跳过validateLanguage实际实现的调用。有人能澄清一下吗?

    public void validateCAR_SourceValidation_Success() throws Exception{

1.          long partyId=21;

2.          ErrorMessage errorMessage =Mockito.mock(ErrorMessage.class);
            CARValidationInfoVO carValidationInfo = Mockito.mock(CARValidationInfoVO.class);

3.          BibliographicRecordProcDAO bibRecProcDao=PowerMockito.spy(new BibliographicRecordProcDAO());

4.          PowerMockito.doReturn(true).when(bibRecProcDao,"validateLanguage",carValidationInfo,true,errorMessage);
5.          bibRecProcDao.validateCARFile(carValidationInfo, partyId);
    }



private boolean validateLanguage(CARValidationInfoVO carValidationInfo, boolean successFlag, ErrorMessage errorMessage) throws OPSBankServiceDAOException {
        boolean tempFlag;
         boolean tmpFlag =  successFlag;
        if (Utility.isNotEmpty(carValidationInfo.getLanguageList())
                && carValidationInfo.getLanguageList().iterator().hasNext()) {
            tempFlag = validateLanguages(carValidationInfo.getLanguageList(),
                    errorMessage);
            tmpFlag = tmpFlag && tempFlag;
        }
        return tmpFlag;
    }

共有1个答案

伏业
2023-03-14

你确定你的方法调用被模拟了吗?您期望的CARValidationInfoVO对象是否等于传递给实际方法调用的对象?

 类似资料:
  • 我试图模拟一个私有方法(executeGetRequest),在我声明要为私有方法返回的模拟的那一行中,私有方法实际上是用null参数执行的,因此抛出了一个NullPointerException。 VlcPlayerMinimal。爪哇: VlcPlayerMinimalTest。爪哇: 堆栈跟踪: 它似乎PowerMockito实际上是调用的方法,我试图在行PowerMockito.do返回(

  • 问题内容: 如何使用方法句柄调用私有方法? 据我所知,只有两种可公开访问的实例: 也不允许无限制的私人访问。 有非公开组织可以满足我的需求。是否有一些公开的方式来获取它(假设SecurityManager允许它)? 问题答案: 事实证明,可以使用Lookup#unreflect(Method)并暂时使方法可访问(除非在程序初始化期间完成,否则可能会引入小的安全性问题)。 这是Thorben的答案的

  • 我有一节课是这样的 在我使用matutor方法时,php在调用函数abc()时发现了一个致命错误。它说从上下文调用私有方法xxx。 我所知道的oop是非常新的,私有方法/属性只能在同一个类中使用。然而,我不能调用abc(),即使它在同一个类中。 怎么会?

  • 问题内容: 要使用公共方法创建JavaScript类,我需要执行以下操作: 这样,我班的用户可以: 如何创建一个私有方法,该私有方法可以由和方法调用,但不能由该类的用户外部调用? 换句话说,我希望我的方法实现能够做到: 但这不起作用: 如何将其定义为私有方法,使两者都适用? 我已经读过Doug Crockford的文章 几次,但似乎公共方法不能调用“私有”方法,而外部可以调用“特权”方法。 问题答

  • 如何使用方法句柄调用私有方法? 据我所知,只有两种可公开访问的实例: 方法andles.lookup 两者都不允许不受限制的私人访问。 还有非公开的这就是我想要的。是否有某种公开的方式获得它(假设SecurityManager允许)?

  • 我想用PHP在我的简单ORM中实现一个钩子系统: 这会导致一个致命错误: 致命错误:调用私人方法付款::before_save()从上下文'记录'中 有道理。 我可以将范围更改为public,但这似乎很难看:在保存()之前,除了支付之外,没有人与