如何为扩展了Exception类的BusinessException创建一个存根



我试图为异常类创建stub以返回一些字符串,但它不返回该字符串值。有误差

java.lang.Exception: Unexpected exception, expected<ServiceException> but was<java.lang.NullPointerException>

下面是我使用

的示例代码
BusinessException mockBusinessException =mock(BusinessException.class);
@Test(expected = ServiceException.class)
    public void testValidateForRegistrationError() throws ServiceException, BusinessException{
        when(ChecksUtil.initiateValidation(any(Request.class), any(Content.class))).thenThrow(BusinessException.class);
        when(mockBusinessException.getMessage()).thenReturn("Error");
        facadeBeanTest.createRegistration(RegistrationFacadeMock.getCreateRegistrationRequest());
    }
BusinessException extends Exception

测试类

public class FacadeBean{
    createRegistration(){
        try{
        }catch (BusinessException e) {
            String err = e.getMessage(); -- Failed in this line(null pointer exception)
            if(err.contains("Error") ){
                throw new ServiceException(ServiceErrorConstants.CATALOG_NAME, err);            
            }
        }
    }
}

在注释中解析:

你为什么嘲笑一个异常?为什么真正的BusinessException不能工作?

为什么使用thenThrow(BusinessException.class)而不是thenThrow(mockBusinessException) ?

OP的评论,user3123934:

当(ChecksUtil.initiateValidation(any(Request.class), any(Content.class)))))完成后,

就解决了。thenThrow(新BusinessException("错误"),


当依赖关系很少且实现可靠时,使用真实对象而不是模拟对象通常是有意义的。如果您确实使用了模拟,那么通过在构造函数、模拟或重写方法中提供模拟实例,确保被测系统在必要时使用模拟实例。

相关内容

  • 没有找到相关文章

最新更新