我试图使用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');
}
}
}