如何在Controller类之外使用FormFactory

时间:2016-11-19 23:15:08

标签: java playframework dependency-injection mockito guice

我正在尝试为我的模板编写一些简单的单元测试。问题是模板使用的是helper.Form类。

@helper.form(action = routes.SecurityController.login()) {
    @helper.inputText(loginForm("email"))
    @helper.inputPassword(loginForm("password"))
}

因为我在嘲笑表单,所以抛出空指针异常。 这是(我的测试类的一部分):

@Mock
protected Form<User> userForm;

@Test
public void testLoginPage() {
    Content html = views.html.login.render(userForm);
    assertTrue(html.body().contains("Login to your Account"));
}

我不想模仿对已经模拟的表单的所有调用,而是希望能够创建类似于在控制器中完成的空表单

@inject
private FormFactory formFactory;

public Result showLoginPage() {
    return ok(views.html.login.render(formFactory.form(User.class));
}

但我不能为我的生活,将FormFactory注入我的测试类。我尝试过的每一个解决方案都失败了,包括:

FormFactory formFactory = new GuiceInjectorBuilder().injector().instanceOf(FormFactory.class);

文档显示了我如何通过启动一个类似于this的fakeApplication来做到这一点,但是仅仅测试模板的内容就完全过分了。我正在尝试做什么?我觉得这是一个非常简单的概念,但找到解决方案却非常困难。

我正在使用 Play Framework 2.5.6

0 个答案:

没有答案