在不使用 mock mvc 的情况下测试 XML 内容
Test XML content without using mock mvc
我正在使用 mockmvc 进行 spring 测试,它可以很好地测试 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"));
我想利用相同的功能在不使用 mockmvc 和控制器的情况下测试 OutputStream。
是否可以使用相同的 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。
谢谢
不,如果没有 MockMvc
和相关的 类,就不可能重用 XpathResultMatchers
。
但是...有问题的代码(在您的伪代码示例中)在内部委托给 Spring 的 XpathExpectationsHelper
。因此,如果您愿意,您可以直接在 XpathExpectationsHelper
的实例上调用 - 例如 - exists()
方法。
作为替代方案,您可以使用 javax.xml.xpath.XPath
编写自己的基于 XPath 的简单断言,无论如何,XpathExpectationsHelper
在内部使用它。或者...如您所述,只需使用 XMLUnit 中对 XPath 的内置支持。
我正在使用 mockmvc 进行 spring 测试,它可以很好地测试 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"));
我想利用相同的功能在不使用 mockmvc 和控制器的情况下测试 OutputStream。 是否可以使用相同的 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。
谢谢
不,如果没有 MockMvc
和相关的 类,就不可能重用 XpathResultMatchers
。
但是...有问题的代码(在您的伪代码示例中)在内部委托给 Spring 的 XpathExpectationsHelper
。因此,如果您愿意,您可以直接在 XpathExpectationsHelper
的实例上调用 - 例如 - exists()
方法。
作为替代方案,您可以使用 javax.xml.xpath.XPath
编写自己的基于 XPath 的简单断言,无论如何,XpathExpectationsHelper
在内部使用它。或者...如您所述,只需使用 XMLUnit 中对 XPath 的内置支持。