У меня есть REST API, и я пишу TDD для этого проекта. Мой TDD состоит из двух частей: маршрута и сервиса. Я выбрал Шутка. У меня есть база данных MongoDB, которую я использую для тестирования. Когда каждый тест завершен, я сбрасываю свою базу данных с помощью метода afterAll(). В этом методе я запускаю функцию mongoose.connection.dropDatabase.
Когда я запускал только один тестовый файл, ошибки нет, но когда я запускаю несколько тестовых файлов, я получаю сообщение об ошибке. Сообщение об ошибке:
MongoError: Cannot create collection auth-db.users - database is in the process of being dropped.
Я делюсь с вами примерами кодов:
users.route.test.ts:
https://gist.github.com/mksglu/8c4c4a3ddcb0e56782725d6457d97a0e
users.service.test.ts:
https://gist.github.com/mksglu/837202c1048687ad33b4d1dee01bd29c
Когда все мои тесты выполняются, "sometimes" выдает ошибки. Я написал вышеупомянутое сообщение об ошибке. Причина этой ошибки в том, что процесс сброса все еще продолжается. Я не могу решить эту проблему. Был бы признателен, если бы вы могли помочь.
Спасибо.
@ NeilLunn, я знаю, но как я могу это сделать?
Ну, вы вообще не включили код в вопрос. Мы здесь не читаем мысли, поэтому вам действительно нужно "показать нам".. Но, честно говоря, "ожидание разрешения обещания / обратного вызова" довольно понятен, и если вы "не знаю, как это сделать", мы, вероятно, сможем лучше всего указать вам на существующие ответы, которые уже показывают вам, как это сделать.





https://jestjs.io/docs/en/cli.html#runinband
Вам нужна команда --runInBand. Это заставляет шутку запускаться последовательно вместо создания рабочего пула дочерних процессов, которые запускают тесты.
Имеется в виду, конечно, то, что он говорит. Вы явно не ждете, пока не будет выполнено обещание / обратный вызов, который отбрасывает базу данных. Вам нужно это сделать.