簡體   English   中英

Mockito方法返回null

[英]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();
}
}

該方法permuateStringBImpl總是返回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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM