代码之家  ›  专栏  ›  技术社区  ›  szczepaniakdominik

Mocha测试超时

  •  1
  • szczepaniakdominik  · 技术社区  · 6 年前

    我有一个单元测试来注册函数。我返回一个承诺,我收到一个错误:

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

    我试过done()函数,async wait,检查promise reject-没有结果。

    我的测试代码如下:

    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 回复  |  直到 6 年前
        1
  •  0
  •   szczepaniakdominik    6 年前

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