Tho*_*mas 5 mocha.js node.js chai graphql chai-http
我正在测试我的GraphQL API,但我想稍微清理一下.值得注意的是我正在使用chai-http网络请求.这是我目前正在做的事情(哪个有效):
let createUser = (()=> {
return new Promise((resolve, reject) => {
chai.request(server)
.post('/api/graphql/')
.set('content-type', 'application/json')
.send({ 'query' :
'mutation users { \
user : addUser(inputs: { \
firstName: \"Test\", \
lastName: \"User\", \
email: \"test@test.com\", \
}) { \
id, \
firstName \
} \
}'
})
.end((err, res) => {
if (err) { reject(err) }
let data = res.body.data;
let user = data.user;
resolve(user);
})
});
});
Run Code Online (Sandbox Code Playgroud)
但是,我想稍微清理它并执行以下操作:
let createUser = (() => {
let newUser = {
firstName: 'Test',
lastName: 'User',
email: 'test@test.com'
};
return new Promise((resolve, reject) => {
chai.request(server)
.post('/api/graphql/')
.set('content-type', 'application/json')
.send({ 'query' :
'mutation users { \
user : addUser(inputs: ' + JSON.stringify(newUser) + ') { \
id, \
firstName \
} \
}'
})
.end((err, res) => {
if (err) { reject(err) }
let data = res.body.data;
let user = data.user;
resolve(user);
})
});
});
Run Code Online (Sandbox Code Playgroud)
但是,这种样式放置对象输入不起作用并返回错误的请求错误.以下是返回的错误对象的哪一部分:
任何想法为什么这不起作用?提前致谢!
看起来你的JSON输入存在问题.它可能是您的换行符和您的报价的某些组合,这些组合未在服务器上正确解析.
但是,我仍然不建议在GraphQL查询中嵌入您的变量.你应该做这样的事情:
let createUser = (() => {
let newUser = {
firstName: 'Test',
lastName: 'User',
email: 'test@test.com'
};
return new Promise((resolve, reject) => {
chai.request(server)
.post('/api/graphql/')
.set('content-type', 'application/json')
.send({
'query' : 'mutation users ($input: CreateUserInput!) { \
user : addUser(inputs: $input) { \
id, \
firstName \
} \
}',
'variables' : {
'input': newUser
}
})
.end((err, res) => {
if (err) { reject(err) }
let data = res.body.data;
let user = data.user;
resolve(user);
})
});
});
Run Code Online (Sandbox Code Playgroud)
您可以在此处查看另一个简单示例,了解如何在Scaphold上执行变异以创建具有query和variables拆分的用户.
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
1548 次 |
| 最近记录: |