Сценарий
Запуск Jest для модульного тестирования API nodejs, выполняющего экземпляр mongodb в памяти (через mongodb-memory-server )
Моя цель
БД в памяти должна запускаться только один раз для ВСЕХ тестовых файлов.
Почему
Хотя запуск 1 базы данных в файл не является большой проблемой (поскольку он работает быстро), самая важная причина заключается в том, что плагин сначала выбирает двоичные файлы mongo посредством интенсивной загрузки (если они еще не находятся в кэше). Поэтому имеет смысл выполнить эту операцию только один раз вместо ОДНОГО НА ФАЙЛ, поскольку загрузка происходит точно так же (она берет файлы из Интернета и помещает их в папку).
Проблема
Помимо запуска монго в памяти, мне также нужно смоделировать мой файл dbService.js
, чтобы каждый файл в зависимости от него использовал макетированную версию (и, следовательно, сервер в памяти). Поэтому я не могу использовать опцию globalSetup
Jest, потому что в этом файле jest
равно undefined
. Я даже не могу использовать setupFiles
, потому что они запускают PER FILE и они синхронны, в то время как по своей природе mongodb connect мне нужна асинхронная функция. Я также пытался использовать beforeAll
в каждом файле, проходящем через общий служебный модуль, но поскольку тестовые файлы работают параллельно, даже служебный модуль запускается один раз для каждого файла.
Также
Я хотел бы избежать иметь 1 уникальный тестовый файл. Я понимаю, что это обходной путь, но мне было интересно, есть ли простое и чистое решение. Идеальный сценарий: «Сначала сделайте что-нибудь асинхронное, затем выполните тесты параллельно». Не должно быть так сложно, нет?