Я запускаю mocha в nodejs, тестирую асинхронную функцию, я не забыл вызвать done, но после прохождения теста mocha просто зависает, ничего не ожидая. Даже функция, которую я поместил для after()
, завершена, но mocha не завершится, пока я не нажму CTRL + C.
Вот код:
describe("tests the user_handler", () => {
beforeEach(resetDB);
after(resetDB);
it("returns null when searching for a user with an id that does not exists", (done) => {
userHandler.findUserById( {user_id: "U-1234567"} )
.then((result) => {
expect(result).to.be.null;
done()
})
})
})
и вот вывод:
tomk@tomk-Latitude-7480 ~/workspace/fundme/server (login_with_github) $ npm test
> fundme-server@1.0.0 test /home/tomk/workspace/fundme/server
> mocha tests/*.spec.js
tests the user_handler
resetDB called
resetDB finished
✓ returns null when searching for a user with an id that does not exists
resetDB called
resetDB finished
1 passing (64ms)
^CTerminated
Если это актуально (хотя я так не думаю), тестируемая функция использует обещанную версию mysqlConnectionPool
из библиотеки mysql2
Вот код для функции resetDB
, которую я использую для beforeEach
и after
:
function resetDB() {
console.log("resetDB called")
command =
"mysql" +
" --defaults-extra-file=" + mysql_conf_file +
" --host " + process.env['MYSQL_HOSTNAME'] +
" -D fundme < " + testing_db_file_location;
cp.execSync(command);
console.log("resetDB finished")
}
есть идеи о том, что я мог забыть?