[英]Test cases failing for jersey client
我有球衣客戶喜歡
public ClientResponse getCall(String apiName){
restClient = getRestClient();
WebResource webResource = restClient
.resource(Constants.FUELWISE_END_POINT+apiName);
return webResource.accept(Constants.APPLICATION_JSON)
.header(Constants.AUTHORIZATION_HEADER, Constants.AUTHORIZATION_VALUE).get(ClientResponse.class);
}
並具有模擬測試用例行,如:
@Test
public void getCallTest() {
when(restClient.resource(any(String.class))).thenReturn(webResource);
when(webResource.accept(any(String.class)).header(any(String.class), any(Object.class))
.get(eq(ClientResponse.class))).thenReturn(clientResponse);
restUtilityTest.getCall("messages");
}
擴展了測試Java類以從方法getRestClient()返回restClient模擬而不是Client.create()
使用注解使用@Mock進行模擬
堆棧跟蹤錯誤:
This message may appear after an NullPointerException if the last matcher is returning an object
like any() but the stubbed method signature expect a primitive argument, in this case,
use primitive alternatives.
在測試用例文件中完成模擬:
@InjectMocks
private RestUtilityTest restUtilityTest;
@Mock
private Client restClient;
@Mock
private WebResource webResource;
@Mock(name = "response")
private ClientResponse clientResponse;
確保測試對象及其依存關系的排列正確。
@Test
public void getCallTest() {
//Arrange
ClientResponse clientResponse = mock(ClientResponse.class);
WebResource webResource = mock(WebResource.class);
when(webResource
.accept(any(String.class))
.header(any(String.class), any(String.class))
.get(eq(ClientResponse.class))
)
.thenReturn(clientResponse);
Client restClient = mock(Client.class);
when(restClient.resource(any(String.class))).thenReturn(webResource);
RestUtilityTest restUtilityTest = new RestUtilityTest(restClient);
//Act
ClientResponse response = restUtilityTest.getCall("messages");
//Assert
//...
}
注意使用any(String.class)
和eq()
來匹配參數
上面假設模擬的Web資源已正確注入到受測主題類中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.