首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >spring-boot测试:@get请求返回正文为空

spring-boot测试:@get请求返回正文为空
EN

Stack Overflow用户
提问于 2019-07-29 20:01:45
回答 1查看 875关注 0票数 0

在进行内容协商测试时,mock GET在响应正文中返回null,尽管响应状态为200。

代码语言:javascript
运行
复制
java.lang.AssertionError: Response header 'Content-Type' 
Expected :application/json;charset=UTF-8
Actual   :null

下面是完整的测试类代码。我想验证内容类型是否为json。

代码语言:javascript
运行
复制
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK)
@AutoConfigureMockMvc
public class ControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @MockBean
    Controller controller;

    @Test
    public void test() throws Exception {
        mockMvc.perform(get("/query?mediaType=json"))
                .andExpect(status().isOk())
                .andExpect(header().string(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_UTF8_VALUE));
    }}

这是我的控制器的端点。

代码语言:javascript
运行
复制
    @RestController
    public class Controller {

        @RequestMapping(value = "/query", produces = {"application/json", "application/xml"}, method = RequestMethod.GET)
        public @ResponseBody ResultSet getResults(
                final HttpServletRequest request
        ) throws Throwable {

       // logic  ...
       SearchService search = (SearchService) context.getBean("search");
       ResultSet result = search.getResults();
       return result;
    }

有没有想过为什么Body会返回null?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-29 21:25:11

问题出在Test类中的Controller定义上。在测试Controller时,您应该使用它的一个实际实例。获取此ControllermockMvc实例,如下所示(您可以在带@Before注释的setup方法中执行此操作):

代码语言:javascript
运行
复制
mockMvc = MockMvcBuilders.standaloneSetup(new Controller()).build();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57253466

复制
相关文章

相似问题

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