如何使用 Spring MockMvc 检查标头正则表达式响应

问题描述 投票:0回答:1

我有一个 API,它应该返回包含标头

HttpHeaders.CONTENT_DISPOSITION
的响应,其值应与正则表达式
"prefix(.*?)suffix"
匹配。

我的测试:

@Test
public void test() throws Exception {
    final MyRequest request = MyRequest.builder()
            .field("bla")
            .build();

    var res = mockMvc.perform(post("my-uri")
            .contentType(MediaType.APPLICATION_JSON)
            .content(getObjectMapper().writeValueAsString(request)))
            .andExpectAll(status().isOk(),
                    header().string(HttpHeaders.CONTENT_DISPOSITION, matches("prefix(.*?)suffix")),
                    header().string(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"))
            .andReturn()
            .getResponse();
        System.out.println(res);
    }

运行时出现此错误:

You cannot use argument matchers outside of verification or stubbing.

知道如何检查标题 CONTENT_DISPOSITION 吗?

java spring mockmvc
1个回答
0
投票

好吧,ChatGPT 赢了…… 这有效:

@Test
public void test() throws Exception {
    final MyRequest request = MyRequest.builder()
            .field("bla")
            .build();

    var res = mockMvc.perform(post("my-uri")
            .contentType(MediaType.APPLICATION_JSON)
            .content(getObjectMapper().writeValueAsString(request)))
            .andExpectAll(status().isOk(),
                    header().exists(HttpHeaders.CONTENT_DISPOSITION),
                    header().string(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"))
            .andReturn()
            .getResponse();
    
    System.out.println(res);
    assertTrue(res.getHeader(HttpHeaders.CONTENT_DISPOSITION).matches("prefix(.*?)suffix"));
    }
© www.soinside.com 2019 - 2024. All rights reserved.