Resteasy Mock Framework на стороне сервера - PullRequest
0 голосов
/ 20 июля 2011

Я использую серверную среду Resteasy для проверки своего сервиса.Я не хочу тестировать бизнес-логику, но я хотел бы протестировать данные, созданные сервисом.

Используя этот подход, я могу создать простой тест.Тем не менее, в моей службе RestEasy у меня есть несколько зависимостей, которые я хотел бы высмеять.

См. Следующий пример сервиса, который я хотел бы проверить.Соучастник должен быть осмеян, чтобы служба могла быть протестирована.

@Path("v1")
Class ExampleService {
    @inject
    private Collaborator collaborator;

    @GET
    @Path("/")
    @Produces({ "application/xml", "application/json" })
    public Response getDummy() throws WSAccessException, JsonParseException,    JsonMappingException, IOException {

        ...
        Result result = collaborator.getResult();
        ..
        return Response.ok("helloworld").build();
    }
}

Тест junit является следующим

@Test
public void testfetchHistory() throws URISyntaxException {
    Dispatcher dispatcher = MockDispatcherFactory.createDispatcher();
    POJOResourceFactory noDefaults = new POJOResourceFactory(ExampleService.class);
    dispatcher.getRegistry().addResourceFactory(noDefaults);
    MockHttpRequest request = MockHttpRequest.get("v1/");
    MockHttpResponse response = new MockHttpResponse();

    dispatcher.invoke(request, response);


    Assert.assertEquals(..);         
}

Как я могу издеваться над соавтором в тесте?

Ответы [ 2 ]

5 голосов
/ 20 августа 2011

Это сработало для меня, используя EasyMock

    @Test
public void testfetchHistory() throws URISyntaxException {

    Collaborator mockCollaborator  = EasyMock.createMock(Collaborator.class);
    Result result = new Result();
    EasyMock.expect(mockCollaborator.getResult()).andReturn(result);
    EasyMock.replay(mockCollaborator);

    ExampleService obj = new ExampleService();
    obj.setCollaborator(mockCollaborator);

    Dispatcher dispatcher = MockDispatcherFactory.createDispatcher();
    dispatcher.getRegistry().addSingletonResource(obj);
    MockHttpRequest request = MockHttpRequest.get("v1/");
    MockHttpResponse response = new MockHttpResponse();

    dispatcher.invoke(request, response);

    Assert.assertEquals(..); 

    EasyMock.verify(mockCollaborator);       
}
0 голосов
/ 01 ноября 2013

В качестве альтернативы вы можете использовать testfun-JEE для запуска облегченного JAX-RS (на основе RESTeasy и TJWS) внутри вашего теста и использования правила junit testfun-JEE JaxRsServer для создания запросов REST и подтверждения ответов.

testfun-JEE поддерживает внедрение других EJB-объектов, а также макетов объектов в ваш класс ресурсов JAX-RS.

...