mocha, mon goose - done () вызывается несколько раз - PullRequest
0 голосов
/ 31 января 2020

У меня есть набор тестов для тестирования регистрации пользователей:

const chai = require('chai');
const chaiHttp = require('chai-http');
const { app } = require('../../');
const {User} = require('../../models/');

chai.use(chaiHttp);

describe('Register new user', () => {

    it('it should register new user and return data', done => {
        done();
        chai.request(app)
        .post('/api/users')
        .send({name: 'Alex', email:'alex@gmail.com', password: 'alextest'})
        .then(res => {
            console.log('1-st done called');
            done();

        });
    });

    it('it should display not provided data error', done => {
        chai.request(app)
        .post('/api/users')
        .send({})
        .then(res => {
            chai.expect(res).to.have.status(400);
            chai.expect(res.body.errors).to.be.an('object');
            chai.expect(res.body.errors).to.have.ownProperty('password');
            chai.expect(res.body.errors).to.have.ownProperty('email');
            chai.expect(res.body.errors).to.have.ownProperty('name');
            done();
        });
    });

    after(done => {
        User.deleteMany({}, err => {
            done();
        });
    });

});

И каждый раз, когда я запускаю этот тест. Есть ошибка. Если я удаляю его («он должен отображать не предоставленную ошибку данных»), тест как результат теста пройден. Но с этими двумя дегустационными случаями в одном тестовом случае каждый всегда терпит неудачу.

Server running on port 3000
api_1    |   Register new user
api_1    |     ✓ it should register new user and return data
api_1    | 2-cnd done called
api_1    |     ✓ it should display not provided data error
api_1    | 1-st done called
api_1    |     1) it should register new user and return data
api_1    | done delete many called
api_1    | 
api_1    | 
api_1    |   2 passing (121ms)
api_1    |   1 failing
api_1    | 
api_1    |   1) Register new user
api_1    |        it should register new user and return data:
api_1    |      Error: done() called multiple times
api_1    |       at /usr/src/app/test/it/auth.js:18:13
api_1    |       at processTicksAndRejections (internal/process/task_queues.js:94:5)

Не могу понять, что я делаю неправильно ...

1 Ответ

1 голос
/ 31 января 2020

В этом тесте вы дважды звоните done:

it('it should register new user and return data', done => {
  done(); // <—- ONCE
  chai.request(app)
    .post('/api/users')
    .send({name: 'Alex', email:'alex@gmail.com', password: 'alextest'})
    .then(res => {
      console.log('1-st done called');
      done(); // <—- TWICE
    });
});

Удалите первый.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...