Тесты работают вечно с knex и mocha - PullRequest
0 голосов
/ 10 июня 2018

Так что я использую модуль Knex с Node для взаимодействия с моей базой данных, и это здорово, делает все, что мне нужно.

Однако, когда я запускаю свои модульные тесты в 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 голосов
/ 12 сентября 2018

У меня была такая же проблема с 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()
})
...