亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Mockito-doReturn()和when()之間的區別

Mockito-doReturn()和when()之間的區別

我目前正在使用Mockito在Spring MVC應用程序中模擬我的服務層對象,在該應用程序中我想測試我的Controller方法。但是,當我閱讀Mockito的細節時,我發現這些方法doReturn(...).when(...)等效于when(...).thenReturn(...)。所以,我的問題是什么是有兩個方法,做同樣的事情或之間有什么細微的區別點doReturn(...).when(...)和when(...).thenReturn(...)?任何幫助,將不勝感激。
查看完整描述

3 回答

?
www說

TA貢獻1775條經驗 獲得超8個贊

如果您使用間諜對象(標有@Spy)而不是模擬對象(標有),則兩種方法的行為會有所不同@Mock:


when(...) thenReturn(...) 在返回指定值之前進行真正的方法調用。因此,如果被調用的方法引發Exception,則必須對其進行處理/模擬。等等。當然,您仍然可以獲得結果(在中定義thenReturn(...))


doReturn(...) when(...) 根本不調用該方法。


例:


public class MyClass {

     protected String methodToBeTested() {

           return anotherMethodInClass();

     }


     protected String anotherMethodInClass() {

          throw new NullPointerException();

     }

}

測試:


@Spy

private MyClass myClass;


// ...


// would work fine

doReturn("test").when(myClass).anotherMethodInClass();


// would throw a NullPointerException

when(myClass.anotherMethodInClass()).thenReturn("test");


查看完整回答
反對 回復 2019-10-15
  • 3 回答
  • 0 關注
  • 7147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號