因此,如果我在不与后端进行太多交互的情况下在真空中测试页面,则效果很好。如果遇到任何类型的服务,我在与UI进行实际交互时都会遇到问题。基本上,什么都不做。我尝试以编程方式setCookie,没有骰子。我试着读取cookie,不。顺便说一句,我的整个网站都需要登录。
cy.setCookie('sess', ';askjdfa;skdjfa;skdjfa;skdjfa;skfjd');<-- does not work
cy.getCookie('sess').should('exist') <-- does not work
我在“测试”这一最佳方法方面存在问题。例如,我有一个帐户部分,用户可以“更新”他们的个人信息。我尝试填写表单(通过UI测试),但是提交被拒绝,没有Auth。即使我刚刚登录(通过UI测试)。 -我知道我需要删除它,因为对于我网站的每个部分,UI登录都是一种不好的做法。
所以,我不知道如何使用cy.request()对graphql调用进行存根。这是我的突变。
mutation Login($email: Email!, $password: String!) {
login(email: $email, password: $password) {
userID
firstName
lastName
}
}
现在,我正在导入我正在测试的站点的每个部分的登录规范。我知道这是一种反模式。喜欢解决这个问题。
未设置我的AUTH(cookie)。即使我尝试以编程方式设置它也不起作用。
也许我应该只保留我的graphql突变?怎么样?
最后,如果我取消了我的graphql突变,我该如何更新会话(通过主会话查询)。如果我可以使这些变异起作用,那么刷新页面将获得我的更新数据,因此我并不需要完全使用这一部分。
有什么想法吗?
答案 0 :(得分:2)
在您发布的另一篇文章中,您一直询问该突变如何与cy.request
一起使用,因此我并没有执行所有操作。我是这样做的,它基本上可以正常工作。希望这会有所帮助
我首先创建了一个const
export const join_graphQL = (query, extra={}) => {
return `mutation {
${query}(join: { email: "${extra.email}", id: "${extra.id}" }) {
id, name, email
}
}`
};
请求配置常量
export const graphqlReqConfig = (body={}, api=graphQlapi, method='post') => {
return {
method,
body,
url: api,
failOnStatusCode: false
}
};
使用cy.request
const mutationQuery = join_graphQL('mutationName', {
email: "email",
id: 38293
});
cy.request(graphqlReqConfig({
query: mutationQuery
})).then((res) => {
const data = res.body.data['mutationName']; // your result
});
希望它看起来不太混乱。
基本上,这些字段必须为字符串,例如"${extra.email}"
,否则会给您错误。不确定graphql的工作原理如何,但是如果我只是${extra.email}
,我会得到一个错误,但我忘记了它是什么错误。
答案 1 :(得分:1)
这是使用cy.request
处理突变的一种简单方法
const mutation = `
mutation {
updateUser(id: 1, firstName: "test") {
firstName
lastName
id
role
}
}`
cy.request({
url: url,
method: 'POST',
body: { query: mutation },
headers: {
Authorization: `Bearer ${token}`,
},
})