Mocha ingores 测试,如何启动所有

Mocha ingores tests, how to launch the all

我正在创建一个 node.js 插件以将 post 数据传输到 elasticsearch。我的测试文件中有四个单元测试。然而,mocha 只启动了其中的两个而忽略了其他的。我应该怎么做才能启动它们,如何解释这种行为? 这是我的测试:

describe('Module', () => {

let DataLogger = require('../dist/index.js').DataLogger;

it('should exist', ()=>{
    expect(new DataLogger()).to.exist;
});

describe('checkCon index name is missed', () => {
    DataLogger.checkCon(null, indexDocParams, 'add', (error, success) => {
        it('success should return null', () => {
            expect(success).to.equal(null);
        });
    });
});

describe('checkCon index does not exist', () =>{
    DataLogger.checkCon('a', indexDocParams, 'add', (error, success)=>{
        it('success should return null', () => {
            expect(success).to.equal(null);
        });
    });
});

describe('checkCon doc added', () =>{
    DataLogger.checkCon('structnew', indexDocBody, 'add', (error, success)=>{
        it('error should return null', () => {
            expect(error).to.equal(null);
        });
    });
});

});

你不应该把你的 it 语句放在代码超级测试的回调中。 Mocha 在加载时构建它的测试列表,因此它可能不会获取这样的语句。

尝试重写为:

describe('checkCon doc added', () =>{
  it('error should return null', (done) => {
    DataLogger.checkCon('structnew', indexDocBody, 'add', (error, success)=>{
        if(error) { 
          return done(error);
        }

        expect(error).to.equal(null);
        done()
    });
});

});

EDIT 添加了 return 错误声明以确保 done 不会被调用两次