0

したがって、RPC 要求を処理するこの GWT コードが状態 (準備完了、待機中、エラーなど) を維持するようにしています。そして、各呼び出しの後にクラスが正しく状態を変更するかどうか、応答変数を設定するかどうかなどを確認したいと思います.

サーバーに実際のリクエストを行わずに(サーバー自体でエラーが発生する可能性があります)、それをテストするにはどうすればよいですか。

リクエスト コールバック クラスを何らかの方法でモックできると思いますが、テストには表示されません。

道に迷った、助けて!

以下のコードのサンプル(誰かが望む場合に備えて、後ですべてを投稿します)。

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.
  }

}
4

1 に答える 1

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(...) { ... }
   }
}

コールバック オブジェクトをクラスに移動し、ファクトリ メソッドを使用することで、コールバックのみをチェックするテストを作成できます。

于 2009-08-03T20:08:01.560 に答える