gpt4 book ai didi

graphql - 如何让 Cypress 动态更新夹具到 graphql 调用

转载 作者:行者123 更新时间:2023-12-05 09:25:52 25 4
gpt4 key购买 nike

我需要改变 Cypress 中的 graphql 调用,以便我可以根据测试更改夹具中的某些键:值对。

我知道我可以调用格式与此类似的 graphql fixture:

  cy.intercept('POST', '/graphql', (req) => {
if (req.body.operationName === 'operationName') {
req.reply({ fixture: 'mockData.json'});
}
}

但假设 mockData 具有以下形状:

 data: {
"user": {
"user": {
"userId": 123,
"inviteId": "123",
"status": "NEEDS_MORE",
"firstName": "Testy",
"lastName": "McTesterson",
"email": "test@testqa.com",
"phone": "3129876767",
"user": null,
"invite": {
"id": "12345",
"sentAt": null,
"sendDate": null,
"status": "NOT_SENT",
"__typename": "Invite"
},
},
}
}

我如何拦截带有 mockData.json 中所有信息的 graphql 调用,但将 "status": "NEEDS_MORE" 更改为 "status": "CLAIMED"我的测试没有改变夹具的其余部分?我的想法是,在规范的每个 it block 中,我重复使用相同的夹具但更改状态,并有不同的断言。

到目前为止,我的尝试要么只发送状态而不发送其余数据,要么只发送夹具而不改变任何内容。有关于如何在 rest 中执行此操作的 cypress 文档,但在 graphql 中没有。我们正在使用 typescript 。

最佳答案

可以先阅读fixture,修改后再回复

cy.fixture('mockData.json').then(data => {

data.user.user.status = 'CLAIMED'

cy.intercept('POST', '/graphql', (req) => {

// according to one reference, this is needed
const g = JSON.parse(req.body)

if (g.operationName === 'operationName') {

req.reply({
body: {data} // same reference shows reply stubbing in this format
})
}
}
})

引用:Smart GraphQL Stubbing in Cypress

关于graphql - 如何让 Cypress 动态更新夹具到 graphql 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74869443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com