Dredd Api Blueprint для текстового формата
Существует проблема с тестом api blueprint dredd, которая беспокоит меня некоторое время.
Я могу dredd протестировать формат JSON успешно, но для текстового формата он всегда будет неудачным.
The fail message -> fail: body: Real and expected data does not match.
Но я проверяю, тело ожидаемое и реальное совпадают.
Кто-нибудь может мне помочь или дать мне несколько советов? Я очень ценю.
Вот мой код:
### Get counting camera [GET]
+ Response 200 (text/plain)
+ Body
vadp_module_number='3'
vadp_module_order='1,2,0'
Ниже приведен результат теста dredd:
fail: body: Real and expected data does not match.
expected:
headers:
Content-Type: text/plain
body:
vadp_module_number='3'
vadp_module_order='1,2,0'
statusCode: 200
actual:
statusCode: 200
headers:
date: Thu, 14 Jun 2018 14:09:39 GMT
server: Boa/0.94.14rc21
accept-ranges: bytes
connection: close
content-type: text/plain
cache-control: no-cache
pragma: no-cache
content-length: 4856
body:
vadp_module_number='3'
vadp_module_order='1,2,0'
1 ответ
В сочетании с API Blueprint Dredd может завершиться с ошибкой на завершающей новой строке с текстом / обычным телом. См. Apiaryio / dredd #67.
См. Обходной путь в разделе Удаление завершающего символа новой строки в ожидаемых текстовых телах в документации Дредда:
var hooks = require('hooks');
hooks.beforeEach(function(transaction) {
if (transaction.expected.headers['Content-Type'] === 'text/plain') {
transaction.expected.body = transaction.expected.body.replace(/^\s+|\s+$/g, "");
}
});
Кажется, что ваше тело не правильно с отступом.
camera.md
FORMAT: 1A
HOST: http://127.0.0.1:5000
# Camera
The camera is a simple API allowing consumers to manage your security cameras.
## Camera [/camera]
### Get counting camera [GET]
+ Response 200 (text/plain; charset=utf-8)
+ Body
vadp_module_number='3'
vadp_module_order='1,2,0'
Я тестирую его с сервером Drakov Mock и Dredd, и он работает хорошо.
drakov -f ./camera.md --public --watch --discover
Или запустите его с помощью докера.
dreed.yml (фрагмент)
...
hooks-worker-handler-port: 61321
config: doc/examples/dredd.yml
blueprint: doc/examples/camera.md
endpoint: 'http://localhost:5000'
И запустить с:
dredd --config ./dredd.yml
Или запустить Dredd с докером тоже.
Результаты в
info: Configuration './dredd.yml' found, ignoring other arguments.
2018-06-25T17:30:23.883Z - warn: Parser warning in file 'camera.md': message-body asset is expected to be a pre-formatted code block, every of its line indented by exactly 12 spaces or 3 tabs on lines 17-18
2018-06-25T17:30:23.884Z - info: Beginning Dredd testing...
2018-06-25T17:30:23.920Z - pass: GET (200) /camera duration: 34ms
2018-06-25T17:30:23.920Z - complete: 1 passing, 0 failing, 0 errors, 0 skipped, 1 total
2018-06-25T17:30:23.921Z - complete: Tests took 36ms