首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用spring- test -mvc自定义测试http头部

使用spring- test -mvc自定义测试http头部
EN

Stack Overflow用户
提问于 2013-09-30 21:51:49
回答 3查看 21.8K关注 0票数 21

我正在使用spring-test-mvc测试我的MVC服务,我使用的代码如下:

代码语言:javascript
复制
MockMvc mockMvc = standaloneSetup(controller).build();
mockMvc.perform(get("<my-url>")).andExpect(content().bytes(expectedBytes)).andExpect(content().type("image/png"))
       .andExpect(header().string("cache-control", "max-age=3600"));

它工作得很好。

现在,我将缓存图像更改为特定范围内的随机图像。例如,它可以是3500-3700,而不是3600。我正在尝试弄清楚如何获得标头值并对其进行一些测试,而不是使用这种andExpect模式。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-30 22:17:49

也许你指的是这样的东西。

代码语言:javascript
复制
    MvcResult mvcResult = mvc.perform(get("/")).andReturn();
    String headerValue = mvcResult.getResponse().getHeader("headerName");
票数 30
EN

Stack Overflow用户

发布于 2013-10-25 03:49:43

在add的答案中添加更多细节:如果您还可以在代码中访问JAX-RS实现,则可以使用CacheControl对象进行非常显式的测试(使用hamcrest匹配器的示例):

代码语言:javascript
复制
int maxAge = CacheControl
                .valueOf(mvcResult.getResponse().getHeader("Cache-Control"))
                .getMaxAge();

assertThat(maxAge, is(both(greaterThanOrEqualTo(3500)).and(lessThanOrEqualTo(3700))));
票数 3
EN

Stack Overflow用户

发布于 2021-06-09 16:56:54

最好的方法是使用MockMvcResultMatchers.header()的spring-test

代码语言:javascript
复制
mockMvc.perform(MockMvcRequestBuilders.get("/api"))
.andExpect(MockMvcResultMatchers.header()
.stringValues("count", "150"));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19095996

复制
相关文章

相似问题

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