我正在尝试向JSF应用程序中添加一些单元测试。该应用程序不高度依赖任何最佳实践,因此许多服务方法都使用FacesContext
从托管会话bean中提取数据,如下所示:
(这是在util类中)
public static Object getPageBean(String beanReference) {
FacesContext fc = FacesContext.getCurrentInstance();
VariableResolver vr = fc.getApplication().getVariableResolver();
return vr.resolveVariable(fc, beanReference);
}
嘲笑这的最好方法是什么?我使用的是groovy,因此我还有更多选择来创建通常无法创建的类。
最佳答案
您可以在运行测试之前通过调用FacesContext.getCurrentInstance
通过setCurrentInstance(FacesContext)
返回模拟上下文。该方法受保护,但是您可以通过反射或扩展FacesContext
来访问它。有一个使用Mockito here的示例实现。
关于unit-testing - 模拟FacesContext,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4252353/