jsf - 如何使用mockito来模拟facescontext?

标签 jsf junit mocking mockito facescontext

如何使用mockito模拟facescontext?

我做了这个虚拟方法:

public String toPage2(){  
    if(isChecked()){  
        return NAV_STRING;  
    } else {  
        FacesContext context = FacesContext.getCurrentInstance();  
        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sæt i kryds checkboxen", null));  
        return "";  
    }  
}  

当我运行 JUnit 测试时,调用 getCurrentInstance() 时出现空指针异常。

如何模拟 facescontext 并编写测试,以确定是否已添加 facesmessage?

最佳答案

要么引入一个FacesContext.setCurrentInstance()(丑陋),要么不使用静态方法。

如果您无法更改静态方法,请将其包装在调用该方法的其他内容中,例如 FacesContextProvider。依赖注入(inject)提供者。然后你可以 mock 它。

public MyClass(FacesContextProvider facesContextProvider) {
    this.facesContextProvider = facesContextProvider;
}

public String toPage2(){  
    if(isChecked()){  
        return NAV_STRING;  
    } else {  

        // Calls FacesContext.GetCurrentInstance() under the hood

        FacesContext context = facesContextProvider.getCurrentInstance();  
        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sæt i kryds checkboxen", null));  
        return "";  
    }  
}  

关于jsf - 如何使用mockito来模拟facescontext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4629960/

相关文章:

java - <丰富:progressbar> Progress bar is shown only when method is finished

java - JUnit with Kotlin - 此类没有构造函数

java - 我如何使用 Hamcrest 检查 double 组中的每个元素是否为另一个数组中的每个元素的 "close"?

javascript - Angular ngMock $httpBackend : split mocks into multiple files

c++ - HippoMocks - 模拟一个返回 unique_ptr 的函数

java - 从 xml JSF/Java 配置 web-app 数据目录

jsf - Primefaces - commandButton 不起作用

java - Webapp 在本地 tomcat7 上运行,但不在 linux tomcat7 上运行

java - 使用命令行如何运行 war 文件中的 junit 测试

PHPUnit 和来自 Guzzle 的模拟请求