在 Mocha 中测试 MySQL 连接
Testing MySQL connection in Mocha
我正在学习 mocha 和 chai。
我以为我只是通过数据库连接测试来保持简单。
测试一开始看起来还不错,但有些东西让我仔细看了看。
测试成功了,所以在某些情况下它们也应该失败,对吧?
我想看到失败,所以我强加了一个场景
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.");
});
问题是测试是异步的,您传递给 Mocha 的函数不包含回调。
如果您传递一个接受回调函数的函数,Mocha 将传递一个回调,您可以调用该回调来通知 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
以通知 Mocha 测试已完成。
请注意,done
可能会传递错误,在这种情况下,Mocha 将无法通过测试。
我正在学习 mocha 和 chai。 我以为我只是通过数据库连接测试来保持简单。
测试一开始看起来还不错,但有些东西让我仔细看了看。 测试成功了,所以在某些情况下它们也应该失败,对吧? 我想看到失败,所以我强加了一个场景
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.");
});
问题是测试是异步的,您传递给 Mocha 的函数不包含回调。
如果您传递一个接受回调函数的函数,Mocha 将传递一个回调,您可以调用该回调来通知 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
以通知 Mocha 测试已完成。
请注意,done
可能会传递错误,在这种情况下,Mocha 将无法通过测试。