我尝试使用NodeJS中的mocha / chai验证正确的数据库操作。我试图创建一种运行SQL查询然后验证它是否正确执行的方法。现在我按顺序执行所有mysql执行但是当我得到断言时结果还没有生成,所以我想知道这个问题的最佳解决方案?
以下是我目前设置的方式,但是当expect()语句运行时,数组中还没有数据。
const assert = require('chai').assert;
const expect = require('chai').expect;
const mysql = require('mysql');
describe('Test mysql credentials, connection and CRUD operation', function() {
var host = "localhost";
var user = "user";
var pass = "pass";
describe('Test CREATE DATABASE', function() {
var connection = mysql.createConnection({
host: host,
user: user,
password: pass
});
before(function(done) {
connection.query("CREATE DATABASE test_db;", function(err, result) {
if (err) throw err;
});
done();
});
it('Database Sucessfully Created', function() {
var databases = new Array();
connection.query("SHOW DATABASES;", function(err, result) {
if (err) throw err;
for (i = 0; i < result.length; i++) {
databases.push(result[i].Database);
}
});
expect(databases).to.include('test_db');
});
});
&#13;
答案 0 :(得分:0)
由于您的查询是异步的,因此您需要在回调函数中设置expect
。执行断言后,您还必须调用done
函数。
it('Database Sucessfully Created', function(done) {
var databases = new Array();
connection.query("SHOW DATABASES;", function(err, result) {
if (err) throw err;
for (i = 0; i < result.length; i++) {
databases.push(result[i].Database);
}
expect(databases).to.include('test_db');
done();
});
});