【发布时间】:2017-09-18 15:11:10
【问题描述】:
在处理表单的应用程序代码中,建议使用 FormFactory 围绕类型 T 的表单创建 Form 包装器。但是在测试时,创建 Form 的方法是什么? (测试中一定要注入FormFactory吗?)
我的应用做了类似的事情:
class MyAmazingClass {
private final FormFactory formFactory;
@Inject
MyAmazingClass(FormFactory formFactory) {
this.formFactory = formFactory;
}
public CompletionStage<Result> myAmazingMethodHandlingForms() {
Form<String> form = formFactory.form(String.class).bindFromRequest();
// ... Actually doing something
return null;
}
}
我的测试类(用于单元测试)应该是什么样的?
我正在尝试这样的事情,但我认为我不应该尝试注入 FormFactory(它似乎也不起作用):
public class MyAmazingClassTest extends WithApplication {
@Mock
FormFactory mockedFormFactory;
@Inject
FormFactory realFormFactory;
MyAmazingClass myAmazingClass;
@Override
protected Application provideApplication() {
return new GuiceApplicationBuilder().build();
}
@Before
public void setUp() throws Exception {
myAmazingClass = new MyAmazingClass(mockedFormFactory);
}
@Test
public void testMyAmazingMethodHandlingForms() throws Exception {
String myString = "ciao";
Form<String> stringForm = realFormFactory.form(String.class).fill(myString);
when(mockedFormFactory.form(eq(String.class)).bindFromRequest()).thenReturn(stringForm);
myAmazingClass.myAmazingMethodHandlingForms();
// Some assertions...
}
}
我正在使用 JUnit 4、Java 8 和 Play 框架 2.5。
【问题讨论】:
标签: java unit-testing playframework junit4 playframework-2.5