我正在学习使用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);
});
}
当我运行测试时,似乎Mocha只是跳过回调并传递。我似乎无法做到这一点。什么是正确的语法?
答案 0 :(得分:2)
使用Mocha测试异步代码并不简单!只需在测试完成后调用回调。通过向它添加一个回调(通常名为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();
});
});