是否可以在网关级别模拟GraphQL服务?

时间:2019-12-04 04:49:39

标签: mocking graphql apollo apollo-federation

想象下面的Node(简体)模块。它使用基础的Apollo联合网关定义了Hapi服务器。该服务器具有/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模拟策略无法在此级别使用,主要是因为我了解的模拟策略取决于手头的架构(​​使用{ 1}} graphql-tools

我的假设正确吗,我需要在服务器级别上模拟单个服务吗? 这是否意味着不需要使用模拟服务来测试Apollo网关?

0 个答案:

没有答案