Play Framework를 사용하고 Java를 선택 언어로 사용하고 있습니다. 나는 외부 서비스에 대한 REST 호출을하는 Controller를 가지고있다. 필자는 외부 서비스를 조롱하여 컨트롤러의 기능을 테스트 할 계획입니다. 이를 위해 필자는 테스트 케이스를 아래와 같이 작성했습니다 (샘플). 나는 외부 서비스를 조롱하기 위해 내 테스트 내에 서버를 내장하고있다.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