Тайм-аут на обещание при попытке сделать запрос мангуста во время тестирования мокко - PullRequest
0 голосов
/ 04 января 2019

В настоящее время у меня возникают проблемы при попытке сделать мангуст-запрос к моей БД во время юнит-тестов. Я пытаюсь получить пользователя, чтобы использовать данные для этого конкретного теста. В идеале, если есть решение, я могу разветвлять его перед каждым хуком, но в настоящий момент я не пытаюсь вернуть объект из БД.

Мой тестовый набор

 let assert = require('assert');
 let request = require('supertest');
 let mongoose = require('mongoose');

 let User = require('../app/models/User');

 it('should be able to update a user', function (done) {
 User.findOne({email: 'example@email.com'})
  .then(user => {
    console.log(user);
    done();
    }).catch(done);

    });

    after((done) => {
        done();
    });
});

В настоящее время я получаю эту ошибку:

 Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (E:\DWA\express-mvc\test\test.js)

Мне не удалось обработать запрос достаточно далеко, чтобы проверить, является ли это проблемой с получением пользователя или самого кода.

У меня есть тесты, которые запускаются так:

request(url)
        .post('/login')
        .send({email: 'example@email.com', password: 'password'})
        .expect(302)
        .end(function (err, res) {
            if (err) {
                throw err;
            }

            done();
        });

Но я не уверен, как подключиться к БД только для одного запроса для получения пользователя, а не использовать один из моих маршрутов к контроллеру

1 Ответ

0 голосов
/ 04 января 2019

Проблема, с которой вы столкнулись, заключается в том, что вы пытаетесь вызвать findOne, когда не подключены к базе данных.


Вы можете инициализировать свою программную систему перед выполнением любого теста Mocha. Например, подключите базу данных.

// ROOT HOOK Executed before the test run
before(async () => {
    // connect to the database here
});

// ROOT HOOK Excuted after every tests finished
after(async () => {
    // Disconnect from the database here
});
...