用于在Java Play中测试的HTTP上下文! 2.0.2

我们正在尝试为视图编写测试,但其中一些需要会话变量才能正确呈现。 这是标准测试的样子:

@Test public void indexTest() { running(fakeApplication(), new Runnable() { public void run() { Content html = views.html.index.render(loginForm); assertThat(contentType(html)).isEqualTo("text/html"); assertThat(contentAsString(html)).contains("log in"); } }); } 

loginForm是我们在测试类中声明的模拟表单。

但是,当我们尝试运行此测试时,我们会收到以下错误:

‘这里没有可用的HTTP上下文’

我们尝试使用testServer并尝试从请求到该服务器获取http上下文,但无济于事。

谢谢 :-)

编辑 @nico_ekito

这是我的loginForm周围的代码:

 Form loginForm = Controller.form(Login.class); 

但是,我认为问题在于被调用的控制器,因为视图不使用任何会话属性。 然而,authenticate()方法(在控制器中,我相信当表单提交到视图时)会使用会话。

如果您发布整个视图会很有用,因为您可能正在使用auth插件/ i18n插件或类似的东西,而这些插件又使用会话属性。 在运行测试之前,您还可以尝试使用Mocktio或类似方法模拟上下文。

 Context.current.set( new Context(mock(Request.class), new HashMap(), new HashMap())); 

我建议再次检查会话属性。