1

问题:有没有办法模拟一些 GraphQL 类型/查询/突变/订阅,同时将其余部分“转发”到现有的 GraphQL 服务器?

情况:应用程序有一个模式,其中一部分已经在服务器上实现,其余的还有待开发。在前端工作有时会产生对我试图解决的后端团队的依赖。

目标设置:有问题的设置应该将所有请求“转发”到现有的 GraphQL 服务器,除了我想要模拟的请求。因此,对于已经在服务器上实现的部分(例如用户身份验证),使用实际的服务器,而对于尚未在服务器上实现的部分,我可以使用模拟响应。

我尝试过搜索,虽然我找到了创建模拟 GraphQL 服务器的方法,但我找不到这样的方法。

我愿意编写一些代码来实现这一点,但作为 GraphQL 的新手,我认为首先询问这个问题会给我一些关于如何解决这个问题的有用指示。

Fwiw,前端使用 Apollo GraphQL(使用 React),后端使用 Absinthe(使用 Elixir/Phoenix)

4

2 回答 2

0

也许你可以使用easygraphql来解决这个挑战!!有多个包可以使用:

  1. easygraphql-now:您可以在您的脚本上创建一个脚本,该脚本package.json"easygraphql-now schema.gql --graphiql --local -p=7000"在您传递架构路由、本地和 graphiql 标志以及端口的位置运行......所以当您运行它时;它将创建传递模式的模拟服务器,因此您的应用程序将向服务器发出请求,该服务器将响应您的查询/突变的模拟。

  2. easygraphql-mock:如果你想返回一个完整的类型的模拟,你可以使用这个包,有了这个,你不必为每种类型创建夹具。

  3. easygraphql-tester:它类似于easygraphql-mock但不同之处在于您可以返回查询的模拟,请查看文档

因此,您可以选择哪些路由应该向easygraphql-now发出请求,或者只使用easygraphql-tester添加查询/突变的响应

于 2018-12-03T14:22:28.670 回答
0

{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/

于 2018-01-01T14:42:22.183 回答