Как заглушить внешний GraphQL Api

В Grinta мы блокируем все HTTP-вызовы в наших спецификациях, чтобы разрешить автономный запуск спецификации и избежать проблем со сторонними сайтами. Недавно мы начали использовать внешний GraphQL Api, и нам нужно было правильно его специфицировать.

Этот подход основан на заглушке HTTP-вызовов с использованием фикстур Sinatra и json. Об этом есть несколько статей, я бы посоветовал вам взглянуть на эту от Whilebot .

Используемый нами API имеет две разные конечные точки: auth и graphql-запросы. Часть auth очевидна: заглушите конечную точку с ожидаемым ответом 🤷‍♂️

Прерывание вызова аутентификации

Теперь, когда у нас есть (поддельный) токен, мы можем обрабатывать конечную точку GraphQL.
Это немного сложнее, потому что все наши запросы будут указывать на один и тот же URL-адрес, поэтому мы адаптируем наш код к нему. Вот фрагмент псевдокода, который это сделает.

Заглушка конечной точки GraphQL

Давайте немного покопаемся, что здесь делается. foo_mutation? и bar_query? фактически читают параметры и ищут совпадение в имени запроса. С graphql-client все идет вперед, так как мы можем получить доступ к объекту operation_name :

Чтение названия операции

Как только мы установили, какой запрос вызывается, мы можем вернуть соответствующий ответ: json в файле или в отдельных файлах фикстур, делайте так, как вам удобнее всего.

Не забудьте принудительно установить заглушку перед каждой спецификацией, и вы получите свой последний класс FakeGraphQL.

спецификация / поддержка / fake_graphql.rb

Ресурсы:
- Клиентская библиотека Graphql
- Статья по боту-заглушке о внешних сервисах

Suggested posts

Singed, интерфейс профилировщика для приложений Ruby и Rails

Singed, интерфейс профилировщика для приложений Ruby и Rails

Вы когда-нибудь хотели понять, почему блок кода Ruby, конкретный веб-запрос или определенное действие контроллера выполняются так медленно? Возможно, вы использовали некоторые инструменты профилирования, такие как speedscope в прошлом, но нашли их громоздкими, или вы пытались, но не поняли, как их использовать. Представляем Singed, новый интерфейс для профилирования от Gusto, написанный Джошем Николсом (он же @technicalpickles).

Тестирование на основе искусственного интеллекта и машинного обучения

Тестирование на основе искусственного интеллекта и машинного обучения

Еще одна тенденция тестирования программного обеспечения, на которую стоит обратить внимание в 2023 году, — это искусственный интеллект (ИИ) и машинное обучение (МО). AI и ML сегодня не являются новыми терминами.

Related posts

Что делает подкаст влиятельным?

Что делает подкаст влиятельным?

На прошлой неделе я заметил пресс-релиз, разосланный через PressGazette (новостной веб-сайт британских СМИ). В статье сообщалось, что Acast, скандинавская компания по размещению и рекламе подкастов, возглавит консорциум «вероятно, самых влиятельных» издателей подкастинга.

Ковбойская ложь

Как мегакорпорации продали американцам мохнатую ложь

Ковбойская ложь

Это ярко-золотое утро в холмистой местности на западе, когда первые лучи солнечного света освещают инеистую траву на равнинах. Стадо безмятежных ангусских коров, угольно-черных и массивных, вырисовывается на фоне восхода солнца, когда они идут по проторенной тропе к месту, которое они все хорошо знают; барная стойка.

Финансирование удаления углерода в 24 финансовом году

Разбивка запросов на ассигнования Carbon180 по направлениям

Финансирование удаления углерода в 24 финансовом году

Элисон Ли, управляющий советник по связям с правительством Процесс ежегодных ассигнований федерального правительства занимает центральное место в наших усилиях по финансированию удаления двуокиси углерода (CDR). Каждый год Carbon180 направляет запросы в различные офисы Конгресса, чтобы помочь определить, куда пойдут доллары в следующем году.

Почему некоторые фрилансеры притворяются своей жизнью

Почему некоторые фрилансеры притворяются своей жизнью

Недавно я был в Linkedin, крупнейшей в мире профессиональной социальной сети, и нашел посты дизайнеров-фрилансеров, за которыми я следил и которые привлекли мое внимание. Все они публиковали фотографии из самолетов, на пляже со своими ноутбуками, из бассейнов и офисов с потрясающими видами.