摩卡测试超时

Mocha tests timeout

我有一个注册函数的单元测试。我 return 一个承诺,但我收到一个错误:

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

我解决了! 第一的: 我必须在 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();
});