2016-01-24 57 views
0

我学着做测试JavaScript和我有我跑想不通为什么摩卡测试合格

describe("Fetches Coordinates", function() { 
     it("searches the database for coordinates", function() { 
      var boundary = routes.setBoundries(20, 80, 20, 80) 
      routes.searchCoords(boundary, function(err,data) { 
       expect(data.length).to.equal(100) 
      }); 
     }); 
    }); 

这个摩卡考验,而这个是它使用

方法
exports.searchCoords = function searchCoords(boundary, callback){ 
    models.sequelize.query('SELECT "data".longitude, "data".latitude, "data".ipscount FROM (' 
       + ' SELECT * FROM "DataPoints" as "data"' 
       + ' WHERE "data".longitude BETWEEN ' 
       + boundary.xlowerbound + ' and ' + boundary.xupperbound + ') data' 
       + ' WHERE "data".latitude BETWEEN ' 
       + boundary.ylowerbound + ' and ' 
       + boundary.yupperbound + ';', { type: models.sequelize.QueryTypes.SELECT}).then(function(data) { 
        callback(data); 
       });     
} 

当我运行测试,似乎摩卡只是跳过回调,并通过。我似乎无法得到这个权利。什么是正确的语法?

回答

2

用摩卡测试异步代码不能简单!只需在测试完成时调用回调。通过添加一个回调(通常名为done)给它(),Mocha会知道它应该等待完成。

it("searches the database for coordinates", function(done) { 
     var boundary = routes.setBoundries(20, 80, 20, 80) 
     routes.searchCoords(boundary, function(err,data) { 
      expect(data.length).to.equal(100) 
      done(); 
     }); 
    }); 
+0

太棒了!我之前看到过,但我想我是把它放在描述函数中而不是它的函数中。谢谢! – user3298823