如何使用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/