2016-07-25 6 views
0

JSONObjectを使用してスパイしようとすると何か問題があると思います。Mockitoを使用しています。私が追加した私のbuild.gradleで模擬JSONObjectは追加された値を取得できません

public LoginResponseData getToken(String response) throws JSONException { 
    JSONObject resJson = new JSONObject(response); //resJson = {} here 

    //do stuff 

    } 

:ここ

JSONObject json = new JSONObject(); 
json.put("token","value"); 

JSONObject spyJson = Mockito.spy(JSONObject.class); 
PowerMockito.whenNew(JSONObject.class).withAnyArguments().thenReturn(spyJson); 
service.getToken(json.toString()); 

方法getToken()のbegginingです: testCompile 'org.json:json:20140107'

+0

私にとってもうまくいきます。 'org.json:json:20160212' – mszymborski

+1

また、' JSONObject.class'ではなく 'json'を' spy'したいと思うかもしれません。 –

答えて

0

私はあなたのコードを考えるには、ここでユニットテストメソッドからのコードです書かれているだけで大​​丈夫です。ご使用のライブラリ(java-json.jar)が正しいか確認してください。

自分の作成したカスタムコードに同じコードを書きましたJSONTest罰金はうまくいきます。

私がコメント「org.json.JSONObject」(あなたのプロジェクトにリンクされてjarファイルを使用して試すことができます)であなたが言及したのと同じパッケージを持っているのjava-jason.jarフォームhereをダウンロードしました。以下は

は、作業コードスニペットです:

import org.json.JSONException; 
import org.json.JSONObject; 

    public class JSONTest { 
     public static void main(String[] args) throws JSONException { 
      JSONObject json = new JSONObject(); 
      json.put("key", "value"); 
      String jsonString = json.toString(); 

      String key = new JSONObject(jsonString).getString("key"); 
      System.out.println(key); 

     } 
    } 

出力:

value 
+0

これは私が記述した状況ではありません、私はちょっと答えを追加します。 –

+0

私は答えた直後に質問を変更しました –

0

は実際には、問題はここにあった:

JSONObject spyJson = Mockito.spy(JSONObject.class); 

@Sotirios Delimanolisが述べたように、私はjsonを偵察するべきであり、ではないクラス。 spyJsonJSONObjectクラスの新しいスパイだったので、以前はtokenというキーが追加されていたので、ここではいつもデフォルトの{}の値を得ていました。変更後:

JSONObject spyJson = Mockito.spy(json); 

期待どおりに動作します。

関連する問題