HTTP上下文在Java游戏测试! 2.0.2(HTTP Context for testing

2019-09-19 02:19发布

我们正在努力编写测试对我们的看法,但他们中的一些要求会话变量正确显示。 这是一个标准的测试看起来像:

@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");
        }
    });
}

登录表单是我们在测试类中声明的模拟形式。

然而,当我们试图运行这个测试,我们得到以下错误:

“有从这里没有HTTP上下文”

我们尝试使用TESTSERVER并试图从请求到该服务器的HTTP上下文,但无济于事。

谢谢 :-)

编辑@nico_ekito

这是我周围的登录表单代码:

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

不过,我相信问题出在控制器内被调用,因为视图不使用任何会话属性。 的authenticate()方法(在控制器中,其中所呈现相信当表单提交视图)然而,使用会话。

Answer 1:

如果您发布的整个看法,因为你可能会使用身份验证插件/ i18n的插件或类似的东西又使用会话属性将是有益的。 您也可以尝试在运行测试之前嘲弄了与Mocktio或相似的背景。

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

我建议去了你的观点再一次检查会话属性虽然。



文章来源: HTTP Context for testing in Java Play! 2.0.2