问题:有没有办法模拟一些GraphQL类型/查询/突变/订阅,同时将其余部分“转发”到现有的GraphQL服务器?
情况:应用程序有一个模式,其中一部分已在服务器上实现,其余部分尚未开发。在前端工作有时会产生对后端团队的依赖,我正试图解决这个问题。
目标设置:有问题的设置应该将所有请求“转发”到现有的GraphQL服务器,但我想要模拟的除外。因此,对于已在服务器上实现的部件(例如,用户身份验证),使用实际服务器,而对于尚未在服务器上实现的部件,我可以使用模拟响应。
我尝试过搜索,当我找到创建模拟GraphQL服务器的方法时,我找不到这样做的东西。
我愿意编写一些代码来实现这一目标,但对于GraphQL来说是新手,我想先问一下这个问题会给我一些有用的指针来解决这个问题。
Fwiw,前端使用Apollo GraphQL(使用React),后端使用Absinthe(使用Elixir / Phoenix)
答案 0 :(得分: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/
答案 1 :(得分:0)
也许您可以使用easygraphql来解决这一挑战!可以使用多个软件包:
easygraphql-now:您可以在package.json
上创建一个脚本,该脚本将运行"easygraphql-now schema.gql --graphiql --local -p=7000"
,并在其中传递架构路由,本地和graphiql标志以及端口...因此,当您运行它时;它将为传递的架构创建一个模拟服务器,因此您的应用程序将向服务器发出请求,该服务器将对您的查询/变异进行模拟。
easygraphql-mock:如果您想返回该类型的完整模拟,则可以使用此包,并且不必为此创建每种夹具。
easygraphql-tester:类似于easygraphql-mock,但不同之处在于您可以返回查询的模拟,请检查docs
因此,您可以选择向easygraphql-now发出请求的路由,或者仅使用easygraphql-tester添加查询/变异的响应