0
//Let's import Mockito statically so that the code looks clearer
import static org.mockito.Mockito.*;

//mock creation
List mockedList = mock(List.class);

//using mock object
mockedList.add("one");
mockedList.clear();

//verification
verify(mockedList).add("one");
verify(mockedList).clear();

この構成のポイントがわかりませんか?それはどのように役立ちますか?関数を呼び出すだけとどう違うのですか?
ドキュメントはかなり薄いです。
ありがとうございました

4

4 に答える 4

3

FooクラスAのあるメソッドがクラスBのオブジェクトのあるメソッドを呼び出すことをテストしたいとしBarます。つまり、クラスAをテストします。テスト中に、クラスBのモックを作成します。次に、このモックオブジェクトをに渡します。クラスAはどういうわけか(クラスAが実際にどのように機能するかに依存します)。テストFooでクラスAのメソッドを実行すると、クラスBのモックでメソッドが呼び出されることが期待Barされます。メソッドを呼び出すことverifyで、Barメソッドのテスト後に、メソッドが実際に正しく機能Fooしていることを確認できます。Fooを呼び出しますBar

于 2012-10-22T22:06:34.553 に答える
3

mockedList.add("one");同時に操作を実行すると、操作が記憶mocked objectされます。したがって、実行すると、引数を指定して呼び出されたverify(mockedList).add("one");ことを確認します。addmockedListone

あなたが違いを得るといいのですが。

于 2012-10-22T20:03:04.660 に答える
1

mockitoのverifyメソッドは、メソッドの呼び出し時間を検証することです。呼び出し時間が1の場合、このパラメーターは省略できます。MockitoLine1473のソースコードを参照してください。

public static <T> T verify(T mock) {
    return MOCKITO_CORE.verify(mock, times(1));
}

だからあなたはコーディングします

verify(mockedList).add("one");
//is the same as
verify(mockedList,times(1)).add("one");

確かに、addメソッドが一度実行されたことを確認することです

于 2012-11-05T03:15:27.337 に答える
0

確かにあなたの例ではそれは明らかですが、メソッド呼び出しを検証する主なアイデアは実際のコードテスト中に現れます-いくつかのコードが次のようなメソッド呼び出しを実行すると想像してください:

class A{
 ....
 service.doSomething(<some arguments>)
 ....
}

それをテストするために、モックサービスオブジェクトを渡しますが、その呼び出し(または呼び出しの数)に渡された特定の引数値を検証したい場合があるので、例のようにverifyを使用します。

于 2012-10-22T20:45:10.550 に答える