#grails #spock
#grails #спок
Вопрос:
У меня есть контроллер, который использует именованную конфигурацию для маршаллеров объектов
JSON.use( isAdmin ? 'adminApi' : 'publicApi') {
respond book
}
Как мне выполнить модульное тестирование приведенной выше строки кода с использованием grails spock framework.
Ответ №1:
Вы можете сделать это по инструкции: контроллеры модульного тестирования и согласование содержимого в разделе Тестирование согласования содержимого (вам нужно немного прокрутить, чтобы добраться до этого раздела).
Вот так:
@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'
}
}