2017-02-13 49 views
3

我试图嘲笑我的graphql服务器,以便当我查询时,它返回模拟数据,而不是去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"}) 
}`; 

Schema

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)); 
}); 
+0

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

+1

btw check out graphql-faker:https://github.com/APIs-guru/graphql-faker 它使用faker.js伪造GraphQL服务器。此外,它支持扩展模式混合真实的服务器数据与伪造。 – RomanHotsiy

回答

2

我认为当你提供的输入变量,它必须是突变无法查询?

使用变量存储输入对象,从太阳神队为其分配$input

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

OR

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

使用GraphQL工具来帮助你模仿的东西出来 https://github.com/apollographql/graphql-tools

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

+0

我没有明白吗??? *您的查询为错误,由@ p0k8_ * –

+0

回答您的回答很好@ p0k8_。我调整了我的回复 –

+0

现在更清楚了 –