Jest: глобальная настройка async с доступом к jest для насмешливых целей - PullRequest
0 голосов
/ 05 сентября 2018

Сценарий Запуск Jest для модульного тестирования API nodejs, выполняющего экземпляр mongodb в памяти (через mongodb-memory-server )

Моя цель БД в памяти должна запускаться только один раз для ВСЕХ тестовых файлов.

Почему Хотя запуск 1 базы данных в файл не является большой проблемой (поскольку он работает быстро), самая важная причина заключается в том, что плагин сначала выбирает двоичные файлы mongo посредством интенсивной загрузки (если они еще не находятся в кэше). Поэтому имеет смысл выполнить эту операцию только один раз вместо ОДНОГО НА ФАЙЛ, поскольку загрузка происходит точно так же (она берет файлы из Интернета и помещает их в папку).

Проблема Помимо запуска монго в памяти, мне также нужно смоделировать мой файл dbService.js, чтобы каждый файл в зависимости от него использовал макетированную версию (и, следовательно, сервер в памяти). Поэтому я не могу использовать опцию globalSetup Jest, потому что в этом файле jest равно undefined. Я даже не могу использовать setupFiles, потому что они запускают PER FILE и они синхронны, в то время как по своей природе mongodb connect мне нужна асинхронная функция. Я также пытался использовать beforeAll в каждом файле, проходящем через общий служебный модуль, но поскольку тестовые файлы работают параллельно, даже служебный модуль запускается один раз для каждого файла.

Также Я хотел бы избежать иметь 1 уникальный тестовый файл. Я понимаю, что это обходной путь, но мне было интересно, есть ли простое и чистое решение. Идеальный сценарий: «Сначала сделайте что-нибудь асинхронное, затем выполните тесты параллельно». Не должно быть так сложно, нет?

1 Ответ

0 голосов
/ 12 сентября 2018

Что я хотел бы сделать, это загрузить файл в globalSetup, а затем настроить вашу базу данных и макет mock либо в каталоге __mocks__, либо в setupFiles, чтобы избежать необходимости устанавливать его явно в каждом тесте.

Каталог __mocks__ предпочтительнее, поскольку макет запускается только тогда, когда ваш код требует этого файла вместо каждого отдельного теста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...