ResponseEntity对象的Mockito测试用例

时间:2019-05-29 10:43:35

标签: java mockito

我正在编写模拟单元测试用例。在嘲笑特定的单位响应实体对象时,我遇到一些错误,感谢任何可以帮助我的人。

这是我的课程:

 public class GetQuery(){
    HttpEntity<String> entity = new HttpEntity<>(PARAMETERS, headers);
    ResponseEntity<QueryResult> exchange = restTemplate.exchange(
                            restUrl + "/v" + restVersion + ".0" + 
         QUERY_SELECTION + ----,HttpMethod.GET, entity, QueryResult.class);
            if (exchange.getStatusCode()==(HttpStatus.OK)) {
                List<Type> records = exchange.getBody().records;
                if (records != null && records.size() >= 1) {
                    return records.get(0);
                } else  {
                    return null;
                } 
    }
    }

这是我的查询结果存储类:

 @JsonIgnoreProperties(ignoreUnknown = true)
    public static class QueryResult<T> {
        public List<T> records;
        public List<T> searchRecords;
    }

    public static class QueryResult extends QueryResult<Type> {
        }

我的测试用例:

@Test
    public void getType(){
Type rt = new Type();
        rt.setId("1");

        QueryResult queryResult = new QueryResult();
        queryResult.searchRecords.add(rt);
        //queryResult.records.add(rt);
        String id = "ML";   


        ResponseEntity recordTypeResponse = new ResponseEntity<>(queryResult, HttpStatus.OK);   


        Mockito.when(restTemplate.exchange(anyString(), eq(HttpMethod.GET), any(HttpEntity.class),
                eq(QueryResult.class))).thenReturn(recordTypeResponse);

        A.GetQuery(id);
        assertEquals( "ML",id);

}

错误在以下两行中:queryResult.searchRecords.add(rt); queryResult.records.add(rt);

默认情况下,如果我通过null,则测试用例可以正常工作。 但是,当我尝试将某些内容传递给记录或搜索记录时。我得到空指针异常。 有没有一种方法可以设置身体,使我的

if (records != null && records.size() >= 1) {
                return records.get(0);
            }

以下代码可以测试

0 个答案:

没有答案