Nock не работает в функциях, упакованных в Middy - PullRequest
0 голосов
/ 21 апреля 2020

Я работаю над проектом, который использует Middy, и у нас есть специальное промежуточное ПО, настроенное для проверки токенов авторизации, отправленных с Auth0. В рамках этого Auth0 делает внешний запрос. Я использовал Nock , чтобы высмеивать эти запросы. Я обнаружил, что если я тестирую функцию, которая не заключена в middy(), Nock работает как положено и перехватывает запрос. Однако, если я пытаюсь протестировать функцию, заключенную в middy() (например, чтобы убедиться, что все промежуточное программное обеспечение применяется правильно), то она не работает. Я настроил очень простой пример c здесь здесь . Он просто проверяет две одинаковые функции: одну упакованную и одну не упакованную. Обратите внимание, что как только функция обернута, происходит что-то, из-за чего Nock неправильно применяет перехватчик. Я не уверен, что это проблема мидди или Нока. Я открыл проблему с middy , но пока ничего не слышал.

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 21 апреля 2020

Я не уверен, является ли это вашей основной проблемой или просто в вашем примере репозитория, но причина, по которой ваш тест проваливается в репо, заключается в том, что вы только приказываете Nock смоделировать один запрос, а затем сделать две отдельные попытки.

Я могу заставить тесты пройти, добавив вызов к persist, или twice, или пропустив первый тест, или создав совершенно другой Nock Interceptor.

ПРОЧИТАЙТЕ ЭТО! - О перехватчиках

Когда вы устанавливаете перехватчик для URL и этот перехватчик используется, он удаляется из списка перехватчиков. Это означает, что вы можете перехватывать 2 или более вызовов на один и тот же URL и возвращать разные вещи для каждого из них. Это также означает, что вы должны установить один перехватчик для каждого запроса, который вы собираетесь получить, в противном случае nock выдаст ошибку, потому что этот URL отсутствует в списке перехватчиков. Если вы не хотите, чтобы перехватчики удалялись по мере их использования, вы можете использовать метод .persist ().

Если это не решит для вас более глубокой проблемы, и вы при проблемах с попыткой определить, почему Nock не соответствует запросу, я рекомендую использовать опцию debug .

...