Тестирование контроллера с фиктивными зависимостями в Java Play 2.4

Я переношу свое приложение 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)


person vohab    schedule 17.07.2015    source источник


Ответы (1)