Причина использования axios-mock-adapter

Я новичок в тестировании вызовов axios и начал использовать axios-mock-adapter, но я не понимаю, почему мы используем axios-mock-adapter.

mock.onPost('/api').reply(200, userData, headers);

В этом фрагменте кода запрос действительно отправляется на сервер или это просто симуляция?

Потому что, если я введу неправильные учетные данные, он ответит 200 статусом, как я идентифицирую вответе, чтобы вернуть 200.

Так что, если я определю статус ответа, какова причина его использования? Если он на самом деле не идет на сервер, кажется, что это бесполезно.

Может быть, я что-то упускаю из-за того, что я новичок, но кто-то должен осветить эту проблему.

1 ответ

Решение

Ответы на ваши вопросы

В этом фрагменте кода запрос действительно отправляется на сервер или это просто симуляция?

Это просто симуляция. Запрос не сделан, только "ответ" возвращается. Это называется издевательством и очень популярно и полезно для написания тестов.

Если вы новичок в различных видах тестирования в целом, этот ответ стоит прочитать.

Если он на самом деле не идет на сервер, кажется, что это бесполезно.

Если вы хотите протестировать систему в целом: т. Е. Ваш веб-сайт + логика бэкэнда (например, авторизация, поиск данных и т. Д.), То да, это бесполезно. Но вы бы не использовали насмешку для этого.

Интеграционные тесты обычно выполняются на работающей системе, они ценны, но очень сложны в обслуживании и, как правило, медленнее. Вы должны заботиться не только о своих тестах, но даже о данных.

Когда бы вы использовали макет

Мокость важна для модульного тестирования вашего кода. Насмешки помогают изолировать вашу логику кода переднего плана от динамического поведения. Это облегчает вам моделирование многих сценариев без затрат на обслуживание данных.

Пример сценария

Вариант использования В вашем приложении вы должны аутентифицировать пользователя по конечной точке REST. Ожидается, что:

  1. Когда пользователь успешно вошел в систему, кнопка "Выход" отображается в заголовке.
  2. Когда срок действия пароля пользователя истек, отображается экран "Изменить пароль".
  3. Когда пользователь ввел неправильные учетные данные, отображается предупреждение
  4. Когда сервер не отвечает, пользователю показывается экран, чтобы повторить попытку позже.

Без насмешек вы должны убедиться, что у вас есть точные данные, настроенные в вашей системе аутентификации. По опыту могу сказать, что это трудно, особенно № 2 и № 4.

Но с помощью mock вы можете просто настроить mock так, чтобы он возвращал ожидаемый ответ для каждого сценария в / перед каждым it() блок.

Это также легче поддерживать, так как ожидание (утверждения assert/ wait) установлено рядом с тестовыми данными (mock.reply()).

Другие вопросы по тегам