Плагин Grails Canoo Webtest: invoke() не может отправить данные JSON в запросе POST
Я оцениваю Canoo Webtest для автоматической интеграции / функционального тестирования как плагин Grails.
У меня есть приложение REST, которое я пытаюсь протестировать, но Canoo Webtest , похоже, неправильно отправляет данные JSON в запросе POST. Мой тестовый код, как показано ниже
invoke( description:"Add a product to shopping cart",
url:'shoppingCart/add', method:'POST',
content:'{"class":"shop.service.Product", "name":"A product", "description":"Manufactured by X", "price":99.9}'
//contentFile: '../product.json'
)
Тело запроса является пустым, независимо от того, использую ли я метод contentFile или вставляю данные как атрибут содержимого. Отчет о тестировании показывает, что данные были отправлены правильно, но на странице ошибки отображается сообщение об ошибке "JSONException: отсутствует значение. в символе 0 из '. Данные JSON в ответ на запрос GET возвращаются нормально.
Я протестировал ту же функциональность с curl, и она отлично работает. Что-то мне не хватает в настройке Canoo Webtest?
Благодарю.
РЕДАКТИРОВАТЬ: я использую Grails 1.3.7 в случае, если это имеет какое-либо значение
1 ответ
ХОРОШО. Я начал просто экспериментировать с invoke(), и кажется, что установка атрибута значение soapAction в true делает свое дело.
Я понятия не имею, почему это работает. Документация invoke() для атрибута говорит
soapAction
Required? no
If the HTTP method is POST and is in fact a SOAP POST request,
this allows the SOAP Action header to be set. Ignored for GETs.
Видимо, он устанавливает необходимый заголовок запроса. Не проверял, какой.
Спасибо за чтение:)
Пока не могу пометить этот ответ как правильный, но сделаю это, когда это возможно.