1
我想在NodeJS中使用mocha/chai验证正确的数据库操作。我试图创建一种方式来运行一个SQL查询,然后验证它是否正确执行。现在我正在按顺序执行所有的mysql执行,但是当我到达断言时,结果还没有生成,所以我想知道这个问题的最佳解决方案?在NodeJS中创建一个返回查询结果作为回调的函数?
这是我现在设置的方式,但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');
});
});
https://mochajs.org/#asynchronous-code。如果您愿意,您也可以返回Promise。 – pethel
谢谢。这似乎解决了这个问题。那么查询函数中的函数(err,result)基本上是内置的回调函数吗? – adaelemans
你是什么意思的内置回调? – Erazihel