Всем привет!
Тестирую REST API пишем в среде Node.js на js с библиотекой mocha + chai.
Для выполнения рестов используем библиотеку sync-request.
Удобство в том, что sync-request выполняет запросы в синхронном режиме и пока ответ от реста не получен, движения дальше нет.
Нужды в асинхронности нет т.к. скорость работы автотеста не критична.
Столкнулся со следующей проблемой:
var request = require('sync-request'); var header = { "Content-Type": "application/json", "Cache-Control": "no-cache" }; deleteRequest = [ { "Name": "Провод", "type": "PRODUCT", "id" : "123" } ]; var response = request("DELETE", microServer + "/repository", {"headers": header, "json": deleteRequest});
DELETE запрос содержит body. И ответ сервиса 404. Судя по логам в микросервис передаётся запрос с пустым body {}.
Где то вычитал, что в таком случае, когда DELETE содержит body необходимо передавать в Header параметр Content-Length, Но не помогло.
При асинхронном запросе с помощью библиотеки request и request-promise запрос работает. Но использование promise очень осложняет код в тесте и заставляет создавать большую цепочку из promise. + огромная проблема в работе с Mocha+Chai.
Через Postman запрос тоже работает.
Вопрос:
Может кто сталкивался и знает как решить проблему для sync-request или знает альтернативную библиотеку для СИНХРОННОГО выполнения REST запросов(и проблем с DELETE body там нет).