Mocha ingores测试,如何启动所有功能

时间:2018-10-29 08:30:57

标签: node.js unit-testing elasticsearch mocha aws-sdk-nodejs

我正在创建一个node.js插件以将数据发布到elasticsearch。我的测试文件中有四个单元测试。但是,摩卡咖啡仅启动其中两个,而忽略其他两个。我应该怎么做才能将它们全部启动,如何解释这种行为? 这是我的测试:

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);
        });
    });
});

});

1 个答案:

答案 0 :(得分:0)

您不应将其it语句放入代码uber test的回调中。 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