Dredd Api Blueprint для текстового формата

Существует проблема с тестом API Blueprint Dredd, которая меня некоторое время беспокоит.

Я могу успешно протестировать формат json dredd, но для текстового формата он всегда терпит неудачу.

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'

person Rong.lin    schedule 14.06.2018    source источник


Ответы (2)


Кажется, что ваше тело имеет неправильный отступ.

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 и Dredd, и он работает хорошо.

Драков

drakov -f ./camera.md --public --watch --discover

Или запустите его с помощью Docker.

Дрид

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
person Anderson Santos    schedule 25.06.2018

В сочетании с 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, "");
  }
});
person Honza Javorek    schedule 25.03.2019