javascript - 在 NodeJS 中创建一个返回查询结果作为回调的函数?

标签 javascript mysql node.js mocha.js chai

我正在尝试在 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/

相关文章:

mysql - 在 MySQL 中存储年龄的好模式,无需引用出生日期

javascript - 使用async/await进行同步代码执行时, "sync-ify"第三方代码怎么办?

mysql - 如何使用 LIMIT 始终包含第一行

javascript - 检查是否有假

javascript - 无法在函数中调用另一个文件

javascript - (集成 P5.js 和 Three.js) --- 使用 P5.js 库中的动画创建一个 Three JS 场景?

mysql - 如何使用简写在 mysql 查询中调用字段

javascript - 如何通过nodejs使用TypeScript编译器?

javascript - Promise 控制流程 - catch 与 onRejected

javascript - 将结构从 C 导出到 wasm?