gpt4 book ai didi

spring-data-rest - Spring Data Rest 内容类型

转载 作者:行者123 更新时间:2023-12-02 07:43:43 24 4
gpt4 key购买 nike

我正在使用 Spring Data Rest MongoDB 为我的应用程序编写单元测试。根据 Josh 的“使用 Spring 构建 REST 服务”入门指南,我有以下测试代码:

    @Test
public void readSingleAccount() throws Exception {
mockMvc.perform(get("/accounts/"
+ this.account.getId()))
.andExpect(status().isOk())
.andExpect(content().contentType(contentType))
.andExpect(jsonPath("$.id", is(this.account.getId())))
.andExpect(jsonPath("$.email", is(this.account.getEmail())))
.andExpect(jsonPath("$.password", is(this.account.getPassword())));
}

此测试在内容类型上失败。

Content type expected:<application/json;charset=UTF-8> but was:    <application/hal+json>
Expected :application/json;charset=UTF-8
Actual :application/hal+json

我没看到MediaType和哈尔一起来吧。内容类型是否在另一个类中定义?

最佳答案

不使用 tomcat 时也有同样的问题(配置为使用 Spring Boot 返回 utf-8)。解决方案是在 GET 请求中设置接受 header ,以便响应获取正确的内容类型:

private MediaType contentType = new MediaType("application", "hal+json", Charset.forName("UTF-8"));

并在您的请求中执行

@Test
public void readSingleAccount() throws Exception {
mockMvc.perform(get("/accounts/"
+ this.account.getId()).**accept(contentType)**)
.andExpect(status().isOk())
.andExpect(content().contentType(contentType))
.andExpect(jsonPath("$.id", is(this.account.getId())))
.andExpect(jsonPath("$.email", is(this.account.getEmail())))
.andExpect(jsonPath("$.password", is(this.account.getPassword())));
}

关于spring-data-rest - Spring Data Rest 内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29261836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com