Я столкнулся с интересным сценарием, когда проводил некоторое тестирование с jest
на новой кодовой базе, над которой я работал.
Я изучил рекомендации jest о том, как это сделать асинхронное тестирование , но я чувствую, что они не учитывают сценарии, когда асинхронный код запускается из метода, который вызывается, следовательно, использование done
или возврат обещания не будет работать в этих сценариях, следовательносоздание сценариев, в которых некоторые утверждения вызываются до разрешения некоторых обещаний.
В моем конкретном сценарии я также использовал moxios , но это уместно только в том смысле, что оно заглушаетфактическая работа, выполняемая axios и все еще возвращает обещание.
Очевидное решение состоит в том, чтобы предусмотреть небольшую задержку перед выполнением утверждений, что прекрасно работает.В этом readme подробно описывается проблема и решение.
Запутанный сценарий
Проблема, однако, заключается в том, что, если я правильно понял проблему, я ожидал бы, что все тесты структурированы следующим образом.потерпеть неудачу без задержки.
Однако
- Эти тесты хотя
pass
, когда используется шаблон then
catch
для работы с обещаниями внутри функции, и fail
, когда используется async
await
pattern. - Эти тесты
pass
, когда каждый запускает тест по отдельности, и сбой при запуске всего набора тестов - я знаю: ( Наконец,эти тесты проходят на одних машинах разработчика и не проходят на других, что часто затрудняет выявление проблемы
ОБНОВЛЕНИЕ: Этот конкретный вопрос был вызван разницей в версиях узла
Вопрос
Мне просто интересно, что может вызвать любое из вышеуказанных действий, и если я что-то упускаю, так как все они кажутся такими произвольными.