Как "смоделировать" некоторые запросы GraphQL при пересылке остальных на существующий сервер GraphQL?

Вопрос: есть ли способ смоделировать некоторые типы / запросы / мутации / подписки GraphQL, одновременно "перенаправляя" остальные на существующий сервер GraphQL?

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

Целевая настройка: Рассматриваемая настройка должна "пересылать" все запросы на существующий сервер GraphQL, кроме тех, которые я хочу смоделировать. Таким образом, для частей, которые были реализованы на сервере (например, аутентификация пользователя), используется реальный сервер, в то время как для частей, которые не были реализованы на сервере, я могу использовать ложные ответы.

Я попытался выполнить поиск, и хотя я нашел способы создания фиктивного сервера GraphQL, я не смог найти что-то, что делает это таким образом.

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

Между прочим, интерфейс использует Apollo GraphQL (с React), а интерфейс использует Absinthe (с Elixir/Phoenix)

1 ответ

Импортировать {mockServer} от 'graphql-tools', Макет схемы:

import { mockServer } from 'graphql-tools';
import schema from './mySchema.graphql';

const myMockServer = mockServer(schema);
myMockServer.query(`{
  allUsers: {
    id
    name
  }
}`);
// returns
// {
//   data: {
//     allUsers:[
//       { id: 'ee5ae76d-9b91-4270-a007-fad2054e2e75', name: 'lorem ipsum' }, 
//       { id: 'ca5c182b-99a8-4391-b4b4-4a20bd7cb13a', name: 'quis ut' }
//     ]
//   }
// }

чтобы узнать больше о настройке макетов данных в GraphQl, смотрите полные примеры на официальном сайте GraphQL: http://graphql.org/blog/mocking-with-graphql/

Может быть, вы можете использовать https://easygraphql.com/ для решения этой проблемы! Есть несколько пакетов, которые можно использовать:

  1. easygraphql-сейчас: вы можете создать скрипт на вашем package.json это будет работать "easygraphql-now schema.gql --graphiql --local -p=7000" где вы передаете маршрут схемы, флаг local и graphiql и порт... так, когда вы запускаете его; он создаст фиктивный сервер с переданной схемой, поэтому ваше приложение отправит запрос серверу, который ответит на симуляцию вашего запроса / мутации.

  2. easygraphql-mock: если вы хотите вернуть полный макет типа, вы можете использовать этот пакет, и с этим вам не нужно создавать приборы для каждого типа.

  3. easygraphql-tester: это похоже на easygraphql-mock, но с той разницей, что вы можете вернуть макет запроса, проверьте документы

Таким образом, вы можете выбрать, какие маршруты должны сделать запрос к easygraphql-now, или просто добавить ответ на запрос / мутацию, используя easygraphql-tester.

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