Итак, у меня есть набор тестов для запуска моего кода.И все проходит и терпит неудачу, когда это должно.Проблема даже в том, что попытка завершается правильно и проходит тест.Код все еще выполняет блок catch.Я думаю, что я что-то упускаю из-за обработки асинхронных функций, которые он выполняет, что он проходит, но по какой-то причине не заканчивается полностью.
Я пытался передвигаться по некоторым вызовам и добавлять done () в надежде, что это решит проблему, но безуспешно.Я пытаюсь держаться подальше от обещаний, так как они могут быть действительно беспорядочными без каких-либо хороших знаний, когда все становится немного сложнее, и для этого проекта мне рекомендовали использовать асинхронные, а не обещания, так как это проще, и я просто заканчивал работу для следующей группы, чтобы иметьпрочная основа.
connectToTable: async function (client) {
client = client || new Client({
user: "my_user",
host: "postgres",
database: "my_database",
password: "password123",
port: 5432,
max: 20,
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 2000,
});
try {
let resp = await client.connect()
await expect(resp).to.not.contain('Error');
done()
return resp;
}
catch {
console.error("didnt connect")
}
},
executeQueryOnDatabase: async function (client, col, query) {
//client.connect()
//checks to verify that the columns of alphatwo match the array created with expected order and columns
try {
let resp = await client.query(query)
for (let respCol of resp) {
console.log(JSON.stringify(col))
await expect(JSON.stringify(col)).to.contain(respCol); // this will turn the specified col list to string and then
// check if that string contains what was was found in db
}
}
catch {
console.error("failed")
}
},
Фактические результаты
@ mocha / literate-app
test_1 |> mocha --reporter spec ./test/test/code/postGresFactoryTable.test.js
test_1 |
test_1 |
test_1 |
test_1|Таблицы PostGres
test_1 |не следует подключаться к базе данных в различных ситуациях
test_1 |1) не может подключиться, если имя пользователя или пароль неверны
test_1 |Проверка наличия alphatwo в базе данных
test_1 |не подключен
test_1 |✓ должен пройти, если мы подключимся и таблица alphatwo существует
test_1 |✓ следует отключиться от базы данных красиво
test_1 |Проверка правильности сборки alphatwo
test_1 |не подключен
test_1 |✓ должен пройти, если мы подключимся и таблица alphatwo существует
test_1 |не удалось
test_1 |✓ должен пройти, если alphatwo правильно собран
test_1 |✓ следует отключиться от базы данных
test_1 |Проверка наличия в базе данных alpharead
test_1 |не подключен
test_1 |✓ должно пройти, если мы подключимся и таблица alpharead существует
test_1 |✓ следует отключиться от базы данных
test_1 |Проверка правильности сборки alpharead
test_1 |✓ должен пройти, если мы подключимся и таблица alpharead существует
test_1 |не подключен
test_1 |не удалось
test_1 |✓ должен пройти, если alpharead правильно построен
test_1 |✓ следует отключиться от базы данных
test_1 |
test_1 |
test_1 |10 проходов (2 с)
test_1 |1 ошибка
test_1 |
test_1 |1) PostGres Tables
test_1 |не следует подключаться к базе данных в различных ситуациях
test_1 |не может подключиться, если имя пользователя или пароль неверны:
test_1 |Ошибка: превышено время ожидания 2000 мс.Для асинхронных тестов и хуков убедитесь, что вызывается «done ()»если вы возвращаете обещание, убедитесь, что оно разрешено.(/literate-app/test/test/code/postGresFactoryTable.test.js)
test_1 |at listOnTimeout (internal / timers.js: 535: 17)
test_1 |at processTimers (internal / timers.js: 479: 7)
test_1 |
test_1 |
test_1 |
test_1 |Вход в базу данных в случае сбоя Ошибка
test_1 |не подключен
test_1 |нпм ERR!код ELIFECYCLE
test_1 |нпм ERR!errno 1
test_1 |нпм ERR!@ мокко: mocha --reporter spec
./test/test/code/postGresFactoryTable.test.js
test_1 |нпм ERR!Статус выхода 1
test_1 |npm ERR!
test_1 |нпм ERR!Не удалось выполнить скрипт @ mocha.
test_1 |нпм ERR!Это, вероятно, не проблема с npm.Там, вероятно, дополнительныеgging output выше.
test_1 |
Ожидаемые результаты будут такими же, однако, он выводит «not connect» только один раз и никогда не должен выводить «failing»
Помощь приветствуется, и я не могу найти, чтобы это происходило в другом месте, где
Небольшая информация о том, что это выполняется через docker-compose, хотя я сомневаюсь, что это вызывает какие-либо проблемы.
Я ожидаю, чтоПервый тест провалился, потому что я не нашел способ, позволяющий ему пройти определенные условия для сбоя с той же функцией.Я мог бы просто создать функцию, предназначенную для отказа, но я не чувствую, что это лучший способ справиться с этим