Mocha 测试用例不等待完成
Posted
技术标签:
【中文标题】Mocha 测试用例不等待完成【英文标题】:Mocha tests cases not waiting before to complete 【发布时间】:2017-06-15 12:21:06 【问题描述】:我正在 Nodejs 中使用 mocha 编写测试用例,并希望在运行测试之前重置数据库数据。我使用 Knex 作为查询生成器来执行查询。
我写了以下逻辑:
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 完成后才运行测试用例?
【问题讨论】:
【参考方案1】:或者为您的before
钩子提供回调并在then
中调用它:
before(function(done)
activityDBOperations.deleteAll()
.then(function()
// all records are deleted
done();
);
);
或者,根据Mocha docs,只需从before
返回一个承诺:
before(function()
return activityDBOperations.deleteAll();
);
【讨论】:
这就是我告诉你的。【参考方案2】:添加 return 语句,以便实际返回 Promise。
【讨论】:
我希望 it 在那之后工作 :( ,承诺正在返回。 这就是我告诉你的。 也许你下次应该提供一个例子。 @JasonLivesay以上是关于Mocha 测试用例不等待完成的主要内容,如果未能解决你的问题,请参考以下文章
selenium+BeautifulReport+python自动化+用例不通过的时候发送邮件