我有一个 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 吗?
好吧,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"));
}