28

次のようなvoidメソッドを持つモッククラスがあります

public class Mock {
    public void method(String string) {
        // doSomething
    }
}

このメソッドが何をするかは気にしませんが、文字列を送信したいと思います。

この文字列は実際には JSON 形式のオブジェクトであり、テストしているメソッドは、最初に送信された文字列に応じてこのオブジェクトを変更しています (非常にランダムとしましょう)。

method(String json) {
    Object obj = unparse(json);
    obj.setRandomValue(random);
    String parsed = parse(obj);
    Mock.method(parsed);
}

以前はnullであった「randomValue」が、メソッドの呼び出し後に実際にランダムに設定されているかどうかを確認したいと思います。

最善の方法は、json をインターセプトし、解析してオブジェクトをチェックすることです。

4

3 に答える 3

52

あなたが探しているのはArgumentCaptor:

  Mock mock =  Mockito.mock(Mock.class);
  ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
  mock.method("input");
  Mockito.verify(mock).method(captor.capture());
  String actualValue = captor.getValue();
于 2012-09-03T08:42:06.877 に答える