Я использую supertest
с jest
для тестирования небольшого KOA API, который использует mongoose
. Вот код теста:
const app = require('./app')
const request = require('supertest')
test('respond with json', async () => {
return request(app.callback())
.get('myurl')
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.expect(200)
})
Если я запускаю jest
с npm test
, я получаю эту ошибку (тесты проходят, но Jest не завершается успешно):
Jest не вышел из системы через одну секунду после завершения пробного запуска.
Обычно это означает, что существуют асинхронные операции, которые не были остановлены в ваших тестах. Для устранения этой проблемы попробуйте запустить Jest с --detectOpenHandles
.
Согласно этому ответу мне нужно закрыть соединение mongoose
.
Итак, я попробовал это:
const app = require('./app')
const request = require('supertest')
const mongoose = require('mongoose')
test('respond with json', async () => {
return request(app.callback())
.get('myurl')
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.expect(200)
})
afterAll(() => mongoose.disconnect())
... но, похоже, не работает, потому что у меня новая ошибка:
console.error node_modules/jest-jasmine2/build/jasmine/Env.js:157
Unhandled error
console.error node_modules/jest-jasmine2/build/jasmine/Env.js:158
Error [ERR_UNHANDLED_ERROR]: Unhandled error. (MongoError: topology was destroyed)
at Function.emit (events.js:171:17)
at done (/x/node_modules/mongoose/lib/model.js:1076:13)
at /x/node_modules/mongoose/lib/model.js:1118:16
at /x/node_modules/mongoose/lib/utils.js:447:16
at err (/x/node_modules/mongodb/lib/utils.js:415:14)
at session.endSession (/x/node_modules/mongodb/lib/utils.js:399:27)
at ClientSession.endSession (/x/node_modules/mongodb-core/lib/sessions.js:72:41)
at executeCallback (/x/node_modules/mongodb/lib/utils.js:397:17)
at err (/x/node_modules/mongodb/lib/utils.js:415:14)
at executeCallback (/x/node_modules/mongodb/lib/utils.js:404:25)
...
И у меня все еще есть это сообщение:
Jest не вышел из системы через одну секунду после завершения пробного запуска.
Обычно это означает, что существуют асинхронные операции, которые не были остановлены в ваших тестах. Для устранения этой проблемы попробуйте запустить Jest с --detectOpenHandles
.
Я не понимаю, почему у меня есть эти ошибки и как я могу их избежать.
Я могу отредактировать свой ответ, если потребуется!