Мокко + Чай - нет подробностей об ошибках - PullRequest
0 голосов
/ 02 сентября 2018

У меня проблема с мокко и чай. Мои тесты не показывают ошибок при неудачных тестах (например, ожидаемое «a» будет «b»). журнал испытаний

1) Shouldn't publish new post - there is a post with this title
npm ERR! Test failed.  See above for more details.

Пример кода:

it('Shouldn\'t publish new post - some required fields are empty', done => {
        request(app)
          .post('/posts')
          .set('Authorization', `Bearer ${token}`)
          .send()
          .end((err, { body }) => {
            if(err) {
              return done(err);
            }

            expect(body).to.have.property('errors');

            return done();
          });
      });

Я думаю, что проблема напрямую не в мокко или чае. Мой репозиторий: репозиторий github .

Все, что вам нужно сделать, это клонировать репо, установить зависимости и запустить mongodb. Не стесняйтесь создавать ложные тесты и видеть результат.

С наилучшими пожеланиями

1 Ответ

0 голосов
/ 03 сентября 2018

Проблема в том, что ошибки не обрабатываются последовательно из-за вложенных обратных вызовов. Если утверждение expect(body)... не выполняется, это приводит к асинхронной ошибке, которая никогда не сообщается текущему тесту с done(error), поэтому все асинхронные утверждения Чай должны быть заключены в try..catch.

Лучше использовать обещания, которые Mocha поддерживает изначально, , как и Supertest . Это позволяет последовательно обрабатывать ошибки без done обратного вызова:

  it('Shouldn\'t publish new post - outdated/wrong token', async () => {
    const { body } = await request(app)
      .post('/posts')
      .set('Authorization', 'Bearer blah_blah_blah')
      .send();

    expect(body).to.have.property('errors');
  });
...