Хобрук: Ваш путь к мастерству в программировании

Rspec получает сообщение из протестированного приложения

Я тестирую работающее приложение, используя rspec/capybara. У меня есть маршрут, который я хочу протестировать, который должен общаться с дополнительной службой через предоставленный URL-адрес.

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

Я хотел бы иметь возможность указать URL-адрес маршрута, а затем rspec получить сообщение обратно из приложения. Есть ли способ сделать это?

Чтобы было ясно, я НЕ хочу, чтобы rspec имитировал/заглушил запрос, потому что он не работает как оболочка для приложения.


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

Ответы:


1

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

Таким образом, нажатие https://not-my-service.com?secondary-service=http://service-i-control.com приводит к чему-то, что содержит ответ (частичный или полный) от http://service-i-control.com.

Если эта служба запущена и работает в рабочей среде, ваш secondary-service также должен быть доступен в Интернете, вы можете рассмотреть возможность использования чего-то вроде ngrok для предоставления локального приложения Rack, которое запускает ваша тестовая среда, которое возвращает определенный ответ.

Если вы не возражаете против использования внешних служб, вы также можете рассмотреть возможность использования https://httpbin.org/, например: https://not-my-service.com?secondary-service=https://httpbin.org/ip вы вернете 200 OK с IP-адресом источника, который попал на сервер. Таким образом, вы можете сопоставить этот IP с https://not-my-service.com.

Если вы не получаете никакой информации, кроме того факта, что он вызывает secondary-service, я бы предложил как часть спецификации:

  1. Разверните стоечное приложение и выложите его в Интернет.
  2. Нажмите на сервис, передающий ваше локальное приложение в качестве параметра.
  3. Подождите, пока вы не получите ожидаемый запрос, затем остановите приложение, и тест будет успешным.
  4. Или истекло время ожидания (скажем, 30 секунд), и ваш тест не прошел (служба так и не была вызвана).
17.02.2019
Новые материалы

Прогресс в технологии Трансформеров часть 3
Многомасштабный управляющий сигнальный преобразователь для бесфазного синтеза движения (arXiv) Автор: Линтао Ван , Кун Ху , Лей Бай , Юй Дин , Ваньли Оуян , Чжиюн Ван . Аннотация:..

Представляем поддержку компонентов Vue.js. Мгновенный HMR и многое другое.
Хотя у FuseBox уже был плагин Vue, он был базовым и не имел многих функций, которые делали работу с Vue.js такой приятной. Однако с этим выпуском мы рады сообщить, что в FuseBox..

Приключения в Javascript, часть 1
Я продолжаю думать о том, чтобы писать больше, но чем больше я думаю об этом, тем меньше я это делаю. Итак, сегодня я перестал думать и начал писать. Отсюда можно только спускаться… В..

Понимание дженериков в TypeScript: подробное руководство
Введение TypeScript, строго типизированный надмножество JavaScript, хорошо известен своей способностью улучшать масштабируемость, удобочитаемость и ремонтопригодность приложений. Одной из..

Учебные заметки JavaScript Object Oriented Labs
Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

Разбор строк запроса в vue.js
Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
«Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..