Я пытаюсь создать спокойную службу, и я пытаюсь использовать свой ответ JSON и преобразовывать его обратно в объект.Grails Потребление ответа JSON.
метод контроллера
def mergeVendors(String region) {
def report = new VendorReport();
//do something with report
response.status = 201
response ([vendorReport: report]) as JSON
}
Метод испытания
void "Test Merge Vendors"() {
when:
controller.request.method = 'POST'
controller.request.json = '[{id:1, zip:"14224"}]'
controller.mergeVendors("Florida")
def response = controller.response
then:
response.zip == "14224"
}
Код выше, что я пытаюсь использовать, и я получаю следующее исключение. Как вернуть ответ обратно в объект VendorReport?
groovy.lang.MissingMethodException: Нет подписи метода: org.healthresearch.VendorController.response() применяется для типов аргументов: (java.util.LinkedHashMap) значения: [[vendorReport: [email protected] ]] Возможные решения: ответить (java.lang.Object), getResponse(), ответить (java.lang.Object, java.util.Map), ответить (java.util.Map, java.lang.Object), отвечает (java.lang.String), respondsTo (java.lang.String, [Ljava.lang.Object;)
Что мне нужно сделать, чтобы вернуть json обратно в объект VendorReport в моем тесте? –
'then: response.json == report' – zfChaos
then: \t def response = controller.response.json; Ответ == отчет Поставщики тестовых слияний (org.VendorControllerIntegrationSpec) | org.codehaus.groovy.grails.web.converters.exceptions.ConverterException: Ошибка синтаксического анализа JSON \t на grails.converters.JSON.parse (JSON.java:278) \t в org.VendorControllerIntegrationSpec.Test Объединение производителей (VendorControllerIntegrationSpec. groovy: 32) Вызвано: org.codehaus.groovy.grails.web.json.JSONException: ожидается символ ',' или ']' в символе 16 из ['vendorReport': [email protected]] \t at grails.converters.JSON.parse (JSON.java:269) \t ... 1 еще –