Node.js 摩卡测试案例未等待完成
我正在用Nodejs中的mocha编写测试用例,希望在运行测试之前重置数据库数据。我使用Knex作为查询生成器来执行查询 我写了以下逻辑:Node.js 摩卡测试案例未等待完成,node.js,promise,mocha.js,Node.js,Promise,Mocha.js,我正在用Nodejs中的mocha编写测试用例,希望在运行测试之前重置数据库数据。我使用Knex作为查询生成器来执行查询 我写了以下逻辑: describe('Activities:', function() { before(funtion(){ activityDBOperations.deleteAll() .then(function(){ // all records are deleted }); }); it('it should a
describe('Activities:', function() {
before(funtion(){
activityDBOperations.deleteAll()
.then(function(){
// all records are deleted
});
});
it('it should add a record into Activities table: multiple time activity', function(done) {
activityDBOperations.addRecord(requestParams)
.then(function(data) {
expect(data.length > 0).to.equal(true);
done();
});
});
});
问题是测试用例开始执行,而不是等待deleteAll操作完成。我的理解是,由于deleteAll返回承诺,程序执行会向前推进,因为承诺是异步的
如何确保测试用例只在deleteAll完成时运行?添加返回语句,以便承诺实际返回。在挂钩之前提供对
的回调,然后在中调用它:
before(function(done) {
activityDBOperations.deleteAll()
.then(function() {
// all records are deleted
done();
});
});
或者,根据,只需在
之前返回的承诺:
before(function() {
return activityDBOperations.deleteAll();
});
我希望在那之后它能起作用:(,承诺会被兑现。这就是我告诉你的。也许你下次应该举个例子。@JasonLiveSay这就是我告诉你的。