使用赛普拉斯 .request 调用 GraphQL 端点
Posted
技术标签:
【中文标题】使用赛普拉斯 .request 调用 GraphQL 端点【英文标题】:Call GraphQL endpoints using Cypress .request 【发布时间】:2018-10-03 22:05:04 【问题描述】:我用谷歌搜索了cypress request with graphql
,但我看到很多人提到mock up server
、stub
等等。但是我找不到一个完整的例子来说明如何将 GraphQL 与 cy.request 一起使用。
【问题讨论】:
【参考方案1】:也许您可以在使用cy.request
时尝试此尝试,就像您在cy.request
中使用restful
的通常方式一样
例如,您的查询名称为 findUser
,变量为 username
您的查询应该类似于findUser(username:"hello")id, name
等等
但不仅仅是这个,你需要将它作为json
传递,如果它是一个查询,那么它将是"query": findUser(username:"hello")id, name
这实际上是你的身体。
下面是一个例子……
const query = `
findUser(username:"hello")
id
`;
cy.request(
url: 'http://localhost/graphql/', // graphql endpoint
body: query , // or query: query depending if you are writing with es6
failOnStatusCode: false // not a must but in case the fail code is not 200 / 400
).then((res) =>
cy.log(res);
);
【讨论】:
很好,这确实有效,非常感谢。我什至尝试使用graphql-request
,但效果不如预期
你能用突变完成这项工作吗?我似乎无法解决它。有什么想法吗?
@jamesemanon 这也适用于突变,与查询相同。你想发个帖子让我给你示例代码吗?
@jamesemanon 给我你的问题帖子的 URL,这样我就可以给你一个示例代码。至于图片上传,我还没有那么远,但也许你可以看看这两个帖子,希望对你有所帮助。 ***.com/questions/47074225/… 和 github.com/cypress-io/cypress/issues/170
***.com/questions/51012988/…【参考方案2】:
我添加method: "post"
后,选择的答案对我有用
const query = `
query getItems
items
items
id
`;
cy.request(
method: "post",
url: 'http://localhost:4000/graphql',
body: query ,
).then((res) =>
console.log(res.body);
);
【讨论】:
以上是关于使用赛普拉斯 .request 调用 GraphQL 端点的主要内容,如果未能解决你的问题,请参考以下文章
在赛普拉斯的测试中保留 cookie / localStorage 会话