Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 摩卡测试案例未等待完成_Node.js_Promise_Mocha.js - Fatal编程技术网

Node.js 摩卡测试案例未等待完成

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

我正在用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完成时运行?

添加返回语句,以便承诺实际返回。

在挂钩之前提供对
的回调,然后在
中调用它:

before(function(done) {
   activityDBOperations.deleteAll()
     .then(function() {
         // all records are deleted
         done();
     });
});
或者,根据,只需在
之前返回
的承诺:

before(function() {
   return activityDBOperations.deleteAll();
});

我希望在那之后它能起作用:(,承诺会被兑现。这就是我告诉你的。也许你下次应该举个例子。@JasonLiveSay这就是我告诉你的。