Express JavaScript Поля Supertest Expect Speci c json - PullRequest
1 голос
/ 17 февраля 2020

Я пытаюсь написать несколько модульных тестов для конечных точек API и решил JavaScript Express с Supertest. У меня есть базовые c падения, но возникают проблемы с проверкой ответа для определенного поля c. Я хочу проанализировать тело и проверить, возвращается ли ожидаемое поле и имеет ли оно правильное значение. Почти все, что я видел онлайн, использует этот метод, но когда я пытаюсь, он всегда проходит, даже когда я ввожу значения, которые, как я знаю, отсутствуют в JSON. Любой совет? Вот мой фрагмент кода:

describe('GET category', function () {
    it('response w/ only injury returned', function () {
        request('endpoint')
            .get('path')
            .set('header', 'token')
            .expect(200)
            .then(response => {
                console.assert(response.body, "Baseball")
            })
    })
});

Я также попытался изменить .then на .expect, с теми же результатами. Если я делаю response.body.specificFieldinBody, я получаю аналогичные результаты. Любая помощь?

1 Ответ

0 голосов
/ 17 февраля 2020

Вы можете поступить по-своему - используйте синтаксис .then, но я думаю, что использование синтаксиса подтверждения Supertest будет хорошо.

Это означает, что используйте response.body.should.have.property("Baseball"); вместо console.assert(response.body, "Baseball") (Baseball - это ваше специальное поле).

Или, я предлагаю создать код повторного использования: поместите функцию обратного вызова подтверждения в следующий expects раздел.

const isIncludeField = function (fieldName) {
  return function (res) {
    res.body.should.have.property(fieldName);
  };
}

describe('GET category', function () {
  it('response w/ only injury returned', function () {
    request('endpoint')
      .get('path')
      .set('header', 'token')
      .expect(200)
      .expect(isIncludeField('Baseball')) // 
      .end(done); // call done callback
  })
});
...