Можно ли имитировать службы GraphQL на уровне шлюза?

Представьте себе следующий модуль Node (упрощенный). Он определяет сервер Hapi с использованием базового федеративного шлюза Apollo. На сервере есть/graphql маршрут, способный принимать запросы GraphQL и агрегировать данные с нескольких интегрированных серверов GraphQL.

const Hapi = require("hapi");
const { ApolloServer } = require("apollo-server-hapi");
const initGateway = require("./init-gateway"); // Apollo Gateway
const context = require("./some-context-getter");

module.exports = async ({ config, plugins, routes }) => {  
  const gateway = initGateway();
  const hapiServer = new Hapi.Server(config);
  const apolloServer = new ApolloServer({
    gateway,
    context,
    // mocks: true, doesn't work
    subscriptions: false
  });

  await hapiServer.register(plugins);
  hapiServer.route(routes);

  await apolloServer.applyMiddleware({
    app: hapiServer
  });

  return hapiServer;
};

Я хотел бы поиздеваться над ответами GraphQL в целях тестирования. Я предполагаю, из того, что я получил из документации, что обычные стратегии имитации Apollo или GraphQL не могут использоваться на этом уровне, главным образом потому, что стратегии насмешек, о которых я читал, зависят от наличия схемы под рукой (с использованиемgraphql-tools mockServer, например).

Верно ли мое предположение, нужно ли имитировать отдельные службы на уровне сервера? Означает ли это, что тестирование шлюза Apollo с имитацией служб можно считать ненужным?

0 ответов

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