我试图通过创建FakeApplication对象并调用路由来调用控制器中的action方法。这将调用控制器中的action方法。但是控制器依赖于很少的其他对象。既然我没有创建控制器对象,我该如何模拟这些依赖项呢?
Http.RequestBuilder request = Helpers.fakeRequest()
.method(GET)
.uri("/v1/test/someApple");
Result result = route(fakeApp, request);
assertNotEquals(NOT_FOUND, result.status());
答案 0 :(得分:1)
Play文档显示了实例化Application以进行测试的不同方法。要将所有成员注入控制器,可以使用GuiceApplicationBuilder。
@Inject Application application;
@Before
public void setup() {
GuiceApplicationBuilder builder = new GuiceApplicationLoader()
.builder(new Context(Environment.simple()));
Guice.createInjector(builder.applicationModule()).injectMembers(this);
Helpers.start(application);
}
有关详细信息:https://www.playframework.com/documentation/2.6.x/JavaFunctionalTest