2009-08-03 4 views
0

Итак, у меня есть этот код GWT, который обрабатывает запросы RPC, поддерживающие состояния (готовые, ожидающие, ошибки и т. Д.). И я хотел бы проверить, правильно ли класс изменяет свои состояния после каждого вызова, задает параметры ответа и т. Д.Стыковка внутри класса Java

Теперь, как я должен перейти к проверке того, что без фактических запросов на сервер (которые могут привести к ошибкам в сервер он сам).

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

Я потерян, помогите!

Пример кода ниже (я опубликую все это позже, если кто-то захочет).

public class RPCHandler 
{ 


    public RPCHandler(String method,String[] argumentsName, 
    String[][] argumentsValues) 
    { 
    this.method = method; 
    this.argumentsName = argumentsName; 
    this.argumentsValues = argumentsValues; 
    } 



    /** 
    * Method that creates a RPC request using JSON in a POST 
    * 
    */ 
    public void rpcRequest(){ 
    if(currentState == HandlerState.WAITING_RESPONSE)return; 


    currentState = HandlerState.WAITING_RESPONSE; 

    // Append watch list stock symbols to query URL. 

    url = URL.encode(url); 
    url += "action="; 
    url += method; 

    // Send request to server and catch any errors. 
    RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, url); 

    String requestData = parseToJSON(argumentsName, argumentsValues); 

    try{ 

    Request request = builder.sendRequest(requestData, new RequestCallback() 
    { 
     public void onError(Request request, Throwable exception) 
     { 
     setRPCException(new Exception("Error while saving. Action="+method)); 
     setCurrentState(HandlerState.ON_ERROR); 
     } 
     //Few other error, response received hander methods after this point. 
    } 

} 

ответ

2

Похоже, вы пытаетесь дразнить из фактического транспорта, так что вы должны построить макет класса RequestBuilder. В JMockit, вы могли бы написать:

public class MockRequestBuilder 
{ 
    public void $init(int method, String url) 
    { 
    /* check values and/or store for later */ 
    } 

    public Request sendRequest(String data, RequestCallback callback) 
    { 
    /* check values and/or store for later */ 
    } 
} 

Вам необходимо заполнить подробную информацию о то, что вы хотите сделать макет. Кроме того, вы можете изолировать тестирование обратного вызова, если вы переместили обратный вызов именованного экземпляра класса внутри вашего внешнего класс:

public class MyGWTClass 
{ 
    protected static class RpcCallback extends RequestCallback 
    { 
     public void onError(...) { ... } 
    } 
} 

Перемещая объект обратного вызова в класс и использовать фабричный метод, вы можете создать тесты, только проверьте обратный вызов.

+0

Использовано, сработало, понравилось: D – Diones

Смежные вопросы