mockmvc加载重定向URL

时间:2016-10-24 18:51:50

标签: spring spring-test-mvc

我正在为Spring Rest Service编写测试,该服务将url重定向到另一个spring服务。因此,目标是使用书签名称查找书签。第一个服务使用书签名称获取BookmarkId,然后根据BookmarkId重定向网址以加载对象

我可以轻松测试网址重定向使用,下面的工作正常

 mockMvc.perform(get("/bookmarks/name/" + "sample"))
                .andExpect(status().isMovedPermanently()).andExpect(redirectedUrl("/bookmarks/" + bookmark.getKey()));

我想要的是做下一步并调用下一个url并加载书签对象,我该怎么办?

1 个答案:

答案 0 :(得分:3)

只需执行Web浏览器的操作 - 通过请求Location标题中的URL来跟踪重定向:

mockMvc.perform(get("/bookmarks/" + bookmark.getKey())).andExpect(...)

这是一个单独的测试用例。因此,一个TC应该测试你是否真的被重定向,而另一个TC测试bookmarks/{id}端点。

编辑(2017年6月13日)

Spring Framework的bugtracker中有一个功能请求允许MockMVC遵循重定向(SPR-14342 Improve MockMvc to follow redirects and forwards)。它在今年早些时候遭到拒绝,但有以下评论:

  

解析为"赢得&#t;解决"因为对转发的一般支持远远超出了MockHttpServletRequest的范围。考虑直接针对转发的URL进行测试,并按照转发时的预期设置请求。