mockito-關於@Mock和@Spy的使用方法

 

mockito-關於@Mock和@Spy的使用方法

 1091人閱讀 評論(0) 收藏 舉報
 分類:

參考:http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html

當我們對@Mock的類(@Mock private OrderDao dao;)進行模擬方法時,會像下面這樣去做:

    when(dao.getOrder()).thenReturn("returened by mock "); // 或者使用更爲推薦的given方法

但如果想對@Spy的類(@Spy private PriceService ps;)進行模擬方法時,需要像下面一樣去做:

    doReturn("twotwo").when(ps).getPriceTwo();

原因:

使用@Mock生成的類,所有方法都不是真實的方法,而且返回值都是NULL。

使用@Spy生成的類,所有方法都是真實方法,返回值都是和真實方法一樣的。

所以,你用when去設置模擬返回值時,它裏面的方法(dao.getOrder())會先執行一次。

使用doReturn去設置的話,就不會產生上面的問題,因爲有when來進行控制要模擬的方法,所以不會執行原來的方法。


發佈了177 篇原創文章 · 獲贊 147 · 訪問量 166萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章