2012-11-29 42 views
7

RESTEasy सर्वर अनुरोधों का मजाक करने के लिए Server-side Mock Framework प्रदान करता है। क्या client framework इकाई परीक्षण के बराबर है?क्या रीस्टेसी के लिए क्लाइंट-साइड मॉक फ्रेमवर्क है?

इस प्रयोजन के लिए InMemoryClientExecutor है? मुझे दस्तावेज और उदाहरणों का उदाहरण मिल रहा है कि इस वर्ग का उपयोग कैसे किया जाना चाहिए।

उत्तर

8

ऐसा लगता है कि InMemoryClientExecutor क्लाइंट-साइड मॉकिंग के लिए उपयोग किया जा सकता है। source में देखकर, यह आंतरिक रूप से सर्वर-साइड मॉक फ्रेमवर्क, MockHttpRequest और MockHttpResponse के समान कक्षाओं का उपयोग करता है।

InMemoryClientExecutor आप प्रतिक्रियाओं मजाक के लिए createResponse ओवरराइड करने की क्षमता देता है और यह भी एक निर्माता है जो एक Dispatcher लेता है, यदि आप अनुकूलित करने के लिए करना चाहते हैं और अवरोधन कि जिस तरह से कॉल है।

यहां एक त्वरित और गंदे टुकड़ा client framework उदाहरण का लाभ है,

import javax.ws.rs.*; 
import javax.ws.rs.core.Response.*; 

import org.jboss.resteasy.client.*; 
import org.jboss.resteasy.client.core.*; 
import org.jboss.resteasy.client.core.executors.*; 
import org.jboss.resteasy.mock.*; 
import org.jboss.resteasy.plugins.providers.*; 
import org.jboss.resteasy.spi.*; 

public class InMemoryClientExecutorExample { 
    public interface SimpleClient { 
     @GET 
     @Path("basic") 
     @Produces("text/plain") 
     String getBasic(); 

     @PUT 
     @Path("basic") 
     @Consumes("text/plain") 
     void putBasic(String body); 

     @GET 
     @Path("queryParam") 
     @Produces("text/plain") 
     String getQueryParam(@QueryParam("param")String param); 

     @GET 
     @Path("matrixParam") 
     @Produces("text/plain") 
     String getMatrixParam(@MatrixParam("param")String param); 

     @GET 
     @Path("uriParam/{param}") 
     @Produces("text/plain") 
     int getUriParam(@PathParam("param")int param); 
    } 

    public static void main(String[] args) { 
     RegisterBuiltin.register(ResteasyProviderFactory.getInstance()); 

     ClientExecutor executor = new InMemoryClientExecutor() { 
      @Override 
      protected BaseClientResponse<?> createResponse(ClientRequest request, MockHttpResponse mockResponse) { 
       try {      
        System.out.println("Client requesting " + request.getHttpMethod() + " on " + request.getUri()); 
       } 
       catch(Exception ex) { 
        ex.printStackTrace(); 
       } 
       mockResponse.setStatus(Status.OK.getStatusCode()); 
       return super.createResponse(request, mockResponse); 
      } 
     }; 

     SimpleClient client = ProxyFactory.create(SimpleClient.class, "http://localhost:8081", executor); 
     client.putBasic("hello world"); 
    } 
}