Как я могу использовать описать в цикле? - PullRequest
1 голос
/ 15 апреля 2019

Я пытаюсь написать тестовые случаи, которые проверяют чат-бота, и мне нужно проверять множество вещей в it блоках каждого ответа. Таким образом, процесс в настоящее время состоит в том, что я отправляю много сообщений, и я пытаюсь добавить оператор description в цикл forEach, но по какой-то причине это не работает. Ни один из тестов в блоках it не запущен.

const body = ['hi', 'transfer 20 sms', 'no', 'no', 'first one', 'first one']

describe('API', () => {
      describe('Basic flow', () => {
        body.forEach((v, i) => {
          describe(`Should get response for message #${i + 1}`, () => {
            return agent.post('/watson/send').send({
              'content': {
                'userInput': v,
                'userDial': '123456'
              }
            }).then(response => {
              it('Body should exist', done => {
                // this part doesnt work
                const { body } = response
                const { text } = response.body.reply
                expect(_.isEmpty(body)).to.equal(false)
                done()
              })
            })
          })
        })
      })
    })

Насколько я понимаю, это не работает, потому что Мокко не находит it блоков внутри обещаний. Я не могу понять, как реструктурировать это так, чтобы иметь несколько it блоков, которые тестируют один и тот же результат API.

1 Ответ

0 голосов
/ 15 апреля 2019

describe ожидает блок it, вы пишете код непосредственно в нем.Попробуйте использовать ловушки для выполнения API, а затем test его ответ.

describe('Should get response for message', function () {

    let _response;

    // before hook
    before(function () {

        return agent.post('/watson/send').send({
            'content': {
                'userInput': v,
                'userDial': '123456'
            }
        }).then(response => {
            _response = response;
            done();
        })
    });

    // test cases
    it('Body should exist', done => {
        // this part doesnt work
        const { body } = _response
        const { text } = _response.body.reply
        expect(_.isEmpty(body)).to.equal(false)
        done()
    })
});
...