2011-07-20 17 views
0

私はResteasy serversideモックフレームワークを使用してサービスをテストしています。私はビジネスロジックをテストしたくないですが、サービスによって生成されたデータをテストしたいと思います。Resteasyサーバー側モックフレームワーク

thisアプローチを使用すると、簡単なテストを作成できます。しかし、私の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(..);   
} 

のですか?

答えて

5

これはまた、あなたのテストの内側(RESTEasyのとTJWSに基づいて)軽量なJAX-RSを実行し、RESTを構築するためのtestfun-JEEのJaxRsServerのJUnitのルールを使用するためのtestfun-JEEを使用することができます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

を使用して私のために働きました要求を行い、応答をアサートする。

testfun-JEEは、他のEJBやモックオブジェクトのJAX-RSリソースクラスへの注入をサポートしています。