使用knex和mocha进行测试

时间:2018-06-10 12:00:29

标签: unit-testing mocha forever

所以我使用带有Node的Knex模块来连接我的数据库,这很棒,可以完成我需要的所有工作。

然而,当我在mocha中运行我的单元测试时,即使单元测试完成,该过程仍继续运行。

所以我看到其他人有类似的问题,它永远在运行,他们的解决方案是使用knex.destroy()。我尝试了这个,它适用于一个文件,但我运行我的单元测试,如npm run test *,它将运行任何文件..所以一旦第一个测试运行销毁,以下测试然后都失败。

我只是想知道这是否仍然在运行尚未解决的承诺?或配置错误的knex?

我像这样配置了knex ..

'use strict';
const
    config = require('../../config/config');

module.exports = require('knex')({
    client: 'mysql',
    connection: {
        host: config.get('db.host'),
        user: config.get('db.user'),
        password: config.get('db.password'),
        database: config.get('db.database'),
        multipleStatements: true
    },
    pool: {
        min: 0,
        max: 5,
    // debug: true
});

当我需要一个数据库项目时,我只需用db.insert(...)等来调用它。

感觉有点不对,我不需要获得Knex的实例?

希望有人能给我一些关于它的指示吗?

提前致谢。 格兰特

1 个答案:

答案 0 :(得分:0)

我对knex 0.15.2,pg 7.4.3和mocha 5.2.0有相同的问题。在每种测试方法之后,都建议使用knex.destroy()解决此问题:

let knex: Knex
beforeEach(async () => {
  knex = Knex({
    client: 'pg',
    connection: config.postgres.connection_string,
    debug: config.postgres.debug,
    acquireConnectionTimeout: config.postgres.connection_timeout
  })
})    
afterEach(async () => {
  await knex.destroy()
})