我们对@RestController
进行了一些集成测试,并使用一个通用模式来验证Xpath表达式是否存在以及是否设置了Http标头。但我想进一步验证XPath值是否相等或包含在标题中。
mvc.perform(..)
.andExpect(xpath("Item/@id/").isIn(header("Location")))
这是为了什么,还是我应该创建自己的ResultMatcher
?
答案 0 :(得分:0)
org.springframework.test.web.servlet.result.MockMvcResultMatchers.xpath(xpathExpress, args)
就是你想要的。
例如:
ResultActions resultActions = mvc.perform(..);
String location = resultActions.andReturn().getResponse().getHeader("Location");
resultActions.andExpect(MockMvcResultMatchers.xpath("Item/@id/", null)
.string(org.hamcrest.Matchers.containsString(location)));
如果您需要按节点进行比较,XMLUnit for Java 2.x会提供更多有用信息Matcher
。