![](/img/trans.png)
[英]With InjectMocks, one of my mock become null, without it, an other Mock is null
[英]One of my mock reference becoming null in main class
作為參考,客戶端模擬已准備好並在測試方法中可用,但當涉及到 myMethod 時,客戶端值變為 null
class MainClass {
public void myMethod() {
HttpConnector httpConnector = getHttpConnector(arg);
CLoseableHttpClient client = httpConnector.getDefaults(input); // client returning null
}
private HttpConnector getHttpConnector(String arg) {
return new HttpConnector(arg)
}
}
測試類
@RunWith(PowerMockRunner.class)
class MainClassTest {
@InjectMocks
@Spy
MainClass mainclass;
public void myMethodTest() {
HttpConnector httpConnector = Mockito.mock(HttpConnector.class);
CLoseableHttpClient client = Mockito.mock(CLoseableHttpClient.class);
Mockito.when(httpConnector.getDefaults(input)).thenReturn(client); // client returning with mock value
mainclass.myMethod();
}
}
如果我遺漏了代碼中的任何內容或任何錯誤,請幫助解決這個問題?
您可以存根私有方法getHttpConnector
以返回模擬的httpConnector
嘗試這個
@Test
public void myMethodTest() {
HttpConnector httpConnector = Mockito.mock(HttpConnector.class);
CLoseableHttpClient client = Mockito.mock(CLoseableHttpClient.class);
Mockito.when(httpConnector.getDefaults(anyString())).thenReturn(client);
PowerMockito.when(mainclass, "getHttpConnector").thenReturn(httpConnector);
mainclass.myMethod();
}
此外,我建議使用最新版本 Mockito,它是 Powermock 的替代品。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.