【问题标题】:Mocking graphql server模拟graphql服务器
【发布时间】:2017-07-01 07:06:17
【问题描述】:

我正在尝试模拟我的 graphql 服务器,这样当我查询时,它会返回模拟数据而不是转到 graphql 服务器。在我对模拟 graphql 运行查询时,我得到了这个错误:

"errors":[{"message":"Syntax Error GraphQL request (1:13) Expected $, found Name \"input\"\n\n1: query login(input: {userName: \"james\" , passWord: \"password\"}

这是我目前的设置:

查询

let query = `query login(input: {userName: "james" , passWord: "password"}){
   login(input: {userName: "james" , passWord: "password"})
}`;

架构

const typeDefs = `
type loginCrendentialsType {
  data: String
}
input loginInputType{
  userName: String!
  passWord: String!
}
type RootQuery {
  login(input: loginInputType): [loginCrendentialsType]
}
schema {
  query: RootQuery
}
`;

模拟

const mocks = {
 login: (loginInputType) => ({
   data: mockDB.getUser(loginInputType.userName, loginInputType.passWord)
 })
};

设置

const schema = makeExecutableSchema({
 typeDefs
});

addMockFunctionsToSchema({
 schema,
 mocks,
});

graphql(schema,query).then((result) => {
  console.log("reachedhere  " + JSON.stringify(result));
});

【问题讨论】:

  • 我认为当你提供输入变量时,一定是变异而不是查询??
  • 顺便看看 graphql-faker:github.com/APIs-guru/graphql-faker 它使用 faker.js 来伪造 GraphQL 服务器。它还支持将真实服务器数据与伪造数据混合的扩展模式。

标签: graphql


【解决方案1】:

我认为当你提供输入变量时,一定是变异而不是查询??

使用变量存储输入对象并将其分配给$input

let query = `query login($input: {input: {userName: "james" , passWord: "password"} }){
   login(input: $input)
}`;

let query = `query login{
   login(input: {userName: "james" , passWord: "password"})
}`;

【讨论】:

    【解决方案2】:

    使用 Apollo 团队的 GraphQL 工具来帮助您模拟事物 https://github.com/apollographql/graphql-tools

    您的查询错误,需要在@p0k8_ 回答的变量中

    【讨论】:

      【解决方案3】:

      尝试easygraphql-now,它将根据您的架构创建一个模拟服务器。您无需进行任何配置,只需选择架构文件即可!

      【讨论】:

        猜你喜欢
        • 2017-08-08
        • 2021-05-14
        • 2020-12-21
        • 2021-05-14
        • 1970-01-01
        • 1970-01-01
        • 2018-06-23
        • 2021-04-16
        • 1970-01-01
        相关资源
        最近更新 更多