代码之家  ›  专栏  ›  技术社区  ›  Ken Ingram

在Mocha中测试MySQL连接

  •  2
  • Ken Ingram  · 技术社区  · 8 年前

    我在学习摩卡和柴。

    起初这些测试看起来很好,但有些事情让我更仔细地看了看。 测试成功了,所以在某些情况下也应该失败,对吗? 我想看到一个失败,所以我强迫一个场景

    it('db.connection.connect should return a connection object using default config.js credentials ', function(){
        var result = "FAIL!";
        db.connection.connect(function(err, result) {
            if(err){
                console.log("SQL CONNECT ERROR: " + err);
                result=(err);
            } else {
                //console.log("SQL CONNECT SUCCESSFUL.");
                //result = "SQL CONNECT SUCCESSFUL.";
                console.log("Test succeeded but result should show fail");
            }
            expect(result).to.equal("SQL CONNECT SUCCESSFUL.");
        });
    });
    

    然而,现在测试不会成功。“result”变量从未按预期更改。

    it('db.connection.connect should return a connection object using default config.js credentials ', function(){
        var result = "FAIL!";
        db.connection.connect(function(err, result) {
            if(err){
                console.log("SQL CONNECT ERROR: " + err);
                result=(err);
            } else {
                console.log("SQL CONNECT SUCCESSFUL.");
                result = "SQL CONNECT SUCCESSFUL.";
                //console.log("Test succeeded but result should show fail");
            }
        });
        expect(result).to.equal("SQL CONNECT SUCCESSFUL.");
    });
    

    enter image description here

    1 回复  |  直到 8 年前
        1
  •  3
  •   cartant    8 年前

    问题是测试是异步的,并且传递给Mocha的函数不包括回调。

    it('db.connection.connect should ...', function(done) {
        db.connection.connect(function(err, result) {
            if(err){
                done(err);
                return;
            }
            expect(result).to.equal("SQL CONNECT SUCCESSFUL.");
            done();
        });
    });
    

    呼叫 done

    请注意 完成