Мокко тестирует тайм-аут - PullRequest
0 голосов
/ 18 января 2019

У меня есть тестовый модуль для регистрации функции. Я возвращаю обещание и получаю ошибку:

Error: Timeout of 30000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

Я пробовал с функцией done (), ожидание асинхронно, проверка отклонения Promise - безрезультатно.

Мой тестовый код ниже:

import authController from '../../../src/controllers/authController';
import { expect } from 'chai';
import sinon from 'sinon';

describe('Test register method', () => {
    it('Register method should create new user', () => {
        const req = {
            file: sinon.spy(),
            body: {
                name: "John",
                email: "johndoe@example.com",
                phone: "123",
                gender: "Male",
                birthDate: "12-12-1992",
                purpose: "Friends",
                password: "Secret"
            }
        };
        const res = {
            status: function () {
                return this;
            },
            json: sinon.spy()
        };
        return authController.register(req,res).then(() => {
            expect(res.json.firstCall.lastArg.success).to.equal(true);

        });
    });
});

Код проверяемого контроллера:

https://github.com/elszczepano/FindMates-API/blob/master/src/controllers/authController.js

1 Ответ

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

Я решил это!Во-первых: я должен был установить тайм-аут в package.json равным 10000 миллисекундам:

"test": "nyc mocha --require @babel/register --require @babel/polyfill tests/unit/**/*.test.js --timeout 10000"

Во-вторых: мне пришлось создать соединение с моей базой данных MongoDB (и, конечно, отключение после тестов).

before(done =>{
    mongoose.connect('mongodb://localhost:27017/FindMates', {useNewUrlParser: true });
    mongoose.set('useCreateIndex', true);
    mongoose.set('useFindAndModify', false);
    done();
});
after(done => {
    mongoose.disconnect();
    done();
});
...