我正在为Spring Rest Service编写测试,该服务将url重定向到另一个spring服务。因此,目标是使用书签名称查找书签。第一个服务使用书签名称获取BookmarkId,然后根据BookmarkId重定向网址以加载对象
我可以轻松测试网址重定向使用,下面的工作正常
mockMvc.perform(get("/bookmarks/name/" + "sample"))
.andExpect(status().isMovedPermanently()).andExpect(redirectedUrl("/bookmarks/" + bookmark.getKey()));
我想要的是做下一步并调用下一个url并加载书签对象,我该怎么办?
答案 0 :(得分:3)
只需执行Web浏览器的操作 - 通过请求Location
标题中的URL来跟踪重定向:
mockMvc.perform(get("/bookmarks/" + bookmark.getKey())).andExpect(...)
这是一个单独的测试用例。因此,一个TC应该测试你是否真的被重定向,而另一个TC测试bookmarks/{id}
端点。
Spring Framework的bugtracker中有一个功能请求允许MockMVC遵循重定向(SPR-14342 Improve MockMvc to follow redirects and forwards)。它在今年早些时候遭到拒绝,但有以下评论:
解析为"赢得&#t;解决"因为对转发的一般支持远远超出了MockHttpServletRequest的范围。考虑直接针对转发的URL进行测试,并按照转发时的预期设置请求。