[英]Mockito method returns null
我查看了論壇,但無法找到為什么會這樣
我有
public class AImpl implements A{
@Autowired
B bImpl;
protected void doSomething(){
String s = "test";
String d = b.permuteString(s);
System.out.println(s.substring(1));
}
}
public class BImpl implements B{
public String permuateString(s){
return s;
}
}
在測試中我有:
@InjectMocks
AImpl aImpl;
@Mock
BImpl bImpl;
@Test
public void testCode(){
testCode(){
aImpl.doSomething();
}
}
該方法permuateString
從BImpl
總是返回null。 我需要知道permuteString()的結果才能繼續執行doSomething。 所以它不能為空
為什么?
我正在使用Mockito
通過使用@Mock
注釋BImpl
字段,您說實例本身應該是一個模擬。 但是,你沒有告訴Mockito在使用參數調用時模擬應該給出什么結果,所以Mockito使用它返回null的默認行為。
BImpl
是一個真實行為的真實類是無關緊要的。 該字段不包含該類的實例; 它包含一個mock的實例。
在您的測試方法中,在調用aImpl.doSomething()
,請告訴mockito您希望它使用的行為:
when(bImpl.permuteString("test")).thenReturn("someOtherValue");
可能,@ @Autowired
到你的AImpl
實例中的B
實例也是一個模擬(無論是模擬B
還是模擬BImpl
,我不知道)。
在任何一種情況下,任何模擬的默認存根方法都可能返回null
除非你另外告訴它(除非你stub
)。
我無法確定(除非我運行自己的測試),但我可以說,只需添加日志記錄語句(或使用調試器)來驗證是否有用:
a。) AImpl#b
包含什么值(它是BImpl
還是模擬B
)?
b。)是否BImpl#permuateString()
。
角)什么樣的價值BImpl#permuateString()
獲取用於s
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.