【发布时间】:2014-06-26 18:11:52
【问题描述】:
我一直在尝试定义一个使用 XML 格式请求的测试,但我总是得到 null 值。代码如下:
在规范中:
void "Test XML"() {
when:
controller.request.xml = '<book><title>My Book</title></book>'
controller.doStuff()
then:
response.text == "Book title: My Book"
}
在控制器中:
def doStuff() {
request.withFormat {
xml { render "Book title: ${request.XML?.book?.title}" }
}
}
这与官方文档描述的非常相似。但是,我总是得到:
response.text == "Book title: My Book"
| | |
| | false
| | 7 differences (63% similarity)
| | Book title: (null---)
| | Book title: (My Book)
| Book title: null
org.codehaus.groovy.grails.plugins.testing.GrailsMockHttpServletResponse@61a48515
当我运行测试时。不过,遵循相同模式的 JSON 测试很好。
更新
基于this StackOverflow question,我将控制器代码更新为:
def doStuff() {
request.withFormat {
xml {
def book = new XmlSlurper().parseText(request.reader.text)
render "Book title: ${book.title}"
}
}
}
它有效。当然,我可以将其用作解决方法,但这并不能回答request.XML 的意外行为。为null,表示请求体不会被自动解析。
【问题讨论】: