[英]mockito mock verify
//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();
我不明白這種結構的意義是什么? 它有什么幫助? 它與僅調用函數有何不同?
該文檔很薄。
謝謝
當您mockedList.add("one");
它會在記住您的操作的同時對mocked object
執行操作。 因此,當您verify(mockedList).add("one");
,它驗證add
被稱為上mockedList
與爭論one
。
希望你能有所作為。
您希望測試類A的某些方法Foo
在類B的對象上調用了方法Bar
。換句話說,您正在測試類A。在測試過程中,您對類B進行了模擬。然后傳遞此模擬以某種方式反對A類(取決於A類的實際工作方式)。 當您的測試運行Foo
類A的方法,你期望的Bar
法得到您的B級的模擬稱為通過調用verify
的Bar
法,試驗后Foo
的方法,你可以檢查Foo
方法實際上工作正常-稱為Bar
。
Mockito的verify方法是驗證方法的調用時間,如果調用時間為1,則可以省略此參數,請參見Mockito Line 1473的源代碼
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方法的執行一次
確實在您的示例中這很明顯,但是驗證方法調用的主要思想出現在實際的代碼測試期間-想象一些代碼執行方法調用,例如:
class A{
....
service.doSomething(<some arguments>)
....
}
為了測試它,您將傳遞模擬服務對象,但有時您想驗證為該調用傳遞的特定參數值(或調用次數),因此您將像示例中那樣使用verify。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.