我有一个控制器,它使用对象marshallers的命名配置
JSON.use( isAdmin ? 'adminApi' : 'publicApi') {
respond book
}
如何使用grails spock框架对上面的代码行进行单元测试。
答案 0 :(得分:0)
您可以通过以下书籍执行此操作:测试内容协商中的unit testing controllers和content negotiation(您必须滚动一下才能到达该部分)。
像这样:
@TestFor(FooController)
@Mock(Foo)
class FooControllerSpec extends Specification {
def setup () {
//... setup custom marshaller ...
}
// format parameter, assert on string response
def "responds with admin result using format" () {
when:
params.isAdmin = true
params.format='json'
controller.foo()
then:
response.text == '{"something":"something"}'
}
// or using accept header, assert on parsed json
def "responds with admin result using accept header" () {
when:
params.isAdmin = true
request.addHeader "Accept", "application/json"
controller.foo()
then:
def json = response.json
json.something == 'something'
}
}