Проверка PACT-провайдера: ожидал массив, но получил хеш - PullRequest
0 голосов
/ 27 ноября 2018

При тестировании на уровне потребителя:

describe('Listing first level taxonomies', () => {
    before(() => {
        return provider.addInteraction({
            given: 'GET call for first level taxonomies',
            uponReceiving: 'Get object for listing first level 
                            taxonomies',
            withRequest: {
                method: 'GET',
                path: '/api/taxonomies/8061159/taxons?deleted=false',
            },
            willRespondWith: {
                status: 200,
                headers: { 'Content-Type': 'application/json' },
                body: firstChild
            }
        });
    });


const firstChild = eachLike({
'name': like('Geo'),
'taxons': [
    eachLike({
        'id': like(115590),
        'name': like('Africa'),
        'hasChildren':like (false)
    })
  ]
});

Когда я проверяю на уровне провайдера, я получаю сообщение об ошибке: Ожидается массив, но получен хэш ({"name" => "Demo Taxonomy"), "taxons" => [{"id" => 8145188, "name" => "manojtaxon", "childCategoryName" => "hello", "hasChildren" => true} Полная ошибка присутствует в: https://pastebin.com/XvB17SXY

Пожалуйста, помогите мне в решении этой проблемы. Я думаю, что размер массива больше на уровне провайдера, поэтому он не работает. Хотя я добавил like и eachLike (Тем не менее, он еще не решил).

1 Ответ

0 голосов
/ 27 ноября 2018

Проблема в том, что ваш сопоставитель неверен:

Должно быть так:

const firstChild = like({
  'name': 'Geo',
  'taxons': eachLike({
          'id': 115590,
          'name': 'Africa',
          'hasChildren': false
      })
  });                          

Обратите внимание на удаление [ и ].

Кроме того, вы можете избежать операторов like внутри eachLike, как это подразумевается по умолчанию.Если вам нужно использовать другое сопоставление (например, term, тогда вы можете переопределить это поведение, но вы, похоже, просто используете like здесь).

...