Я переношу свое приложение Java play с 2.37 -> 2.4.1. В своих модульных тестах контроллера я настраивал контроллер вместе со связанными с ним фиктивными зависимостями перед каждым тестом.
Кажется, что метод getControllerInstance был удален из GlobalSettings в Play 2.4, поэтому теперь я не могу переопределить его, чтобы вернуть экземпляр моего контроллера.
@RunWith(MockitoJUnitRunner.class)
public class PublicRoomsControllerTest extends WithApplication {
@Mock
private MyService myService;
private MyController myController;
@Before
public void setUp() {
myController = new MyController(myService);
GlobalSettings global = new GlobalSettings() {
public <T> T getControllerInstance(Class<T> clazz) {
return (T) controller;
}
};
start(fakeApplication(global));
}
@Test
public void myTest() {
Result result = route(new RequestBuilder().method(POST).uri("/test"));
assertEquals(OK, result.status());
}
}
Я знаю, что могу вызвать метод непосредственно в моем экземпляре контроллера из моего теста, например:
Result result = myController.someMethod();
assertEquals(OK, result.status());
Этот подход, кажется, работает нормально, пока someMethod() не полагается на данные формы в запросе, например
Map<String, String> data = Form.form().bindFromRequest().data();
Есть ли способ для теста направлять запросы, которые могут включать данные формы, для использования моего экземпляра контроллера?
(Я использую Guice, Mockito и JUnit)