我正在尝试向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/

10-11 23:22