簡體   English   中英

澤西客戶的測試用例失敗

[英]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.

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