首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >集成测试spring restTemplate (POST -->传递List<String>和接收List<Object>)

集成测试spring restTemplate (POST -->传递List<String>和接收List<Object>)
EN

Stack Overflow用户
提问于 2018-06-04 02:33:22
回答 2查看 435关注 0票数 0

我想测试根据给定字符串的列表接收对象列表的方法。我最初的方法是:

代码语言:javascript
复制
@RequestMapping(value = "/fil/", method = RequestMethod.POST)
@ResponseStatus(value = HttpStatus.OK)
public ResponseEntity<List<Tag>> findAllByCpe(@RequestBody Fil fil) {

    return ResponseEntity.ok(tagRepository.findAllBy(fil));
}

查询(tagRepository):

代码语言:javascript
复制
 @Query("SELECT t FROM Tag t WHERE (t.cpe IS NULL OR t.cpe IN (:#{#fil.cpes}))")
    List<Tag> findAllBy(@Param("fil") Fil fil);

Fil (保存我想要搜索的字符串列表的类)

代码语言:javascript
复制
@Getter
@Setter
@AllArgsConstructor
public class Fil {

    public Fil() {

    }

    @NotNull
    private List<String> cpes;

}

我写了一个集成测试:

代码语言:javascript
复制
@Test
public void FindTagGivenListOfCpes() {
    //GIVEN
    List<String> cpes = new ArrayList<>();
    cpes .add("C1");
    cpes .add("C2");
    cpes .add("C3");

    List<Tag> tagList = (List<Tag>) tagTestBuilder
        .saved()
        .itemList()
        .build();

    //WHEN
    ResponseEntity<Tag[]> response = restTemplate.postForEntity(TagsResourceConstants.PATH + "/fil/", cpes, Tag[].class);


    //THEN
    assertEquals(HttpStatus.OK.value(), response.getStatusCodeValue());
}
EN

回答 2

Stack Overflow用户

发布于 2018-06-04 02:47:11

HTTP415意味着:不支持的媒体类型客户端错误响应代码指示服务器拒绝接受请求,因为有效载荷格式是不支持的格式(source)。

您需要提供请求内容类型和预期响应格式的信息。

Spring默认使用content-type header to application/json。因此,您需要告诉您的服务器,它应该在post请求时使用json来反序列化标记类,或者在post请求上指定所需的类型。例如org.springframework.http.MediaType#APPLICATION_XML_VALUE或org.springframework.http.MediaType#APPLICATION_JSON

您将在响应中遇到类似的问题。

您可以在POST request via RestTemplate in JSON中找到有关如何更改restTemplate连接类型的示例

我建议你读一下:

http://www.baeldung.com/spring-requestmapping

http://www.baeldung.com/rest-template

票数 0
EN

Stack Overflow用户

发布于 2018-06-04 14:29:14

我的错误是我没有实现fil来创建一个对象列表。我应该使用:

代码语言:javascript
复制
Fil fil= new Fil();
fil.setCpes(Stream.of("cpe1").collect(Collectors.toList()));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50669695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档