无法弄清楚为什么摩卡测试正在通过

时间:2016-01-24 00:39:22

标签: javascript node.js mocha

我正在学习使用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只是跳过回调并传递。我似乎无法做到这一点。什么是正确的语法?

1 个答案:

答案 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();
        });
    });