我正在尝试在 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');
});
});
最佳答案
由于您的查询是异步的,您需要在回调函数中设置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();
});
});
关于javascript - 在 NodeJS 中创建一个返回查询结果作为回调的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45199827/