Я использую Play Framework и использую Java в качестве языка выбора. У меня есть контроллер, который делает вызов REST внешней службе. Я намерен высмеять внешнюю службу, чтобы я мог проверить функциональность моего контроллера. Для этого я создал свои тестовые примеры, как показано ниже (образец). Я внедряю сервер в свой тест, чтобы высмеять внешнюю службу.Контрольные контроллеры в Play Framework
public class SomeControllerTest extends WithApplication {
private static Server SERVER;
@Override
protected Application provideApplication() {
final Module testModule = new AbstractModule() {
@Override
public void configure() {
bind(AppDao.class).to(MockAppDaoImpl.class);
}
};
return new GuiceApplicationBuilder().in(Environment.simple()).overrides(testModule).build();
}
@BeforeClass
public static void setup() {
Router router = new RoutingDsl()
.POST("/api/users")
.routeTo(() -> created())
.build();
SERVER = Server.forRouter(router, 33373);
PORT = SERVER.httpPort();
}
@AfterClass
public static void tearDown() {
SERVER.stop();
}
@Test
public void testCreateUser() {
ObjectNode obj = Json.newObject();
obj.put("name", "John Doe");
obj.put("email", "[email protected]");
Http.RequestBuilder request = new Http.RequestBuilder()
.method(POST)
.bodyJson(obj)
.uri("/some/url/here");
Result result = route(request);
assertEquals(ERR_MSG_STATUS_CODE, CREATED, result.status());
assertEquals(ERR_MSG_CONTENT_TYPE, Http.MimeTypes.JSON, result.contentType().get());
}
Я ожидаю, что когда я запускаю тест шутливая сервер будет работать и на основе тестовой конфигурации моего приложения, мой контроллер сделает вызов на макет сервера, который будет возвращать 201
и мой тест будет проходить , Но этого не происходит, потому что как только метод setup()
будет завершен, макет сервера будет убит, и мой контроллер не сможет позвонить ему.
Что я здесь делаю неправильно?
Возможно, вы можете использовать 'Helpers.testServer();' для получения сервера, а затем 'Helpers.start (server);' для запуска. – Kris
@ Kris Как я могу предоставить Маршрутизатору тестовый сервер, созданный помощниками? – Rishabh
Простите, не пробовал с помощью маршрутизатора. – Kris