Rspec получить пост из проверенного приложения - PullRequest
0 голосов
/ 13 февраля 2019

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

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

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

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

1 Ответ

0 голосов
/ 17 февраля 2019

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

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

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

Если вы не возражаете против использования внешних служб, вы также можете рассмотреть возможность использования 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 секунд), и ваш тест не пройден (сервис никогда не вызывался).
...