与Prom一起使用时,带有Moch测试的Gulp挂起并超时

时间:2019-03-30 00:17:21

标签: javascript node.js gulp mocha gulp-mocha

我试图使用Gulp和通过gulp-load-plugins加载的gulp-mocha进行测试。我首先使用异步方法设置数据,然后运行测试,最后关闭并清除数据。 Gulp运行连接到数据库的任务并删除表,然后在运行测试时将挂起直到超时,并且不会输出错误原因。

该代码曾经可以正常工作,但我没有在新的更新中了解到摩卡咖啡或gulp的变化。尝试了一些修复,但是没有新的方法可以执行,我不想使用重复的设置代码进行测试

邮政编码:

let mocha = () => {
  let config = require('configuration')();
  const mongooseTools = require("./server/tools/mongoose-tools");

  return mongooseTools.connect(config.db)
    .then(db => mongooseTools.dropDatabase(db))
    .then(() => Promise.all([
      new Promise((resolve, reject) => gulp.src(testSuites, {read: false})
        .pipe(plugins.mocha({
          reporter: 'spec',
          exit: true,
          checkLeaks: true,
          timeout: 10000
        }))
        .on('error', reject)
        .on('end', resolve))
    ]))
    .catch(err => console.log(err))
    .then(() => mongooseTools.disconnect());
};

测试代码:

describe('User Model Tests:', () => {
  it('should begin with no users', done => {
    User.find({}, (err, users) => {
      users.should.have.length(0);
      done();
    });
  });
});

示例代码猫鼬

class MongooseTools {
  static async connect(db) {
    mongoose.Promise = global.Promise;
    try {
      await mongoose.connect(db.uri, {useCreateIndex: true, useNewUrlParser: true, autoIndex: db.autoIndex});
      mongoose.set('debug', db.debug);
      console.info(chalk.green('Connected to MongoDB.'));
      return mongoose;
    } catch (e) {
      console.error(chalk.red(e));
      throw new Error('Could not Connect To Database');
    }
  }
}

0 个答案:

没有答案