我正在使用带有mockmvc的spring test,它就像测试xml输出的魅力一样!
示例:
ResultActions actions = this.mockMvc.perform(get("/entry/NX_P38398/overview.xml"));
actions.andExpect(xpath("entry/overview/gene-name-list/gene-name[@type='recommended']").exists());
actions.andExpect(xpath("entry/overview/gene-name-list/gene-name[@type='recommended']").string("BRCA1"));
我想利用相同的功能来测试OutputStream而不使用mockmvc和控制器。 是否可以使用相同的ResultMatcher?
示例(伪代码):
XMLContent xmlContent = new XMLContent("<entry>...</entry>");
AssertTrue(xmlContent.andExpect(xpath("entry/overview/gene-name-list/gene-name[@type='recommended']").exists());
我知道它存在XMLUnit http://xmlunit.sourceforge.net/userguide/html/ar01s05.html或其他库,但我想重复使用相同的ResultMatcher。
由于
答案 0 :(得分:1)
不,如果没有XpathResultMatchers
及相关类,则无法重复使用MockMvc
。
然而......有问题的代码(在您的伪代码示例中),在内部委托给Spring XpathExpectationsHelper
。因此,如果您愿意,可以直接在exists()
的实例上调用XpathExpectationsHelper
方法。
作为替代方案,您可以使用javax.xml.xpath.XPath
基于XPath编写自己的简单断言,这是XpathExpectationsHelper
内部使用的内容。或者......正如您所提到的,只需在XMLUnit中使用XPath的内置支持。