修改cypress中的fixture数据并拦截

modify fixture data in cypress and intercept it

假设我有这个 setting.json

{ data: { isDark: false } } 

然后我就这样拦截了

cy.intercept("api/setting", {
    fixture: `setting.json`,
 })

成功了。

但是我无法为 setting.json 中的一个新 属性 或当 isDark 为真时创建一个文件。那么如何在我的测试中更改 setting.json 的 属性 值?

我试过了

cy.intercept("api/setting", (req) => {
 const settingFixture = await cy.fixture('setting.json')

 req.continue((res) => {
  res.send(settingFixture.map((object)=>({...object, isDark: true}))
 })

 cy.visit('some where')
})

但是没用。

根据有关 fixture 命令 (https://docs.cypress.io/api/commands/fixture#Modifying-fixture-data-before-using-it) 的 Cypress 文档, 我想你可以尝试这样的事情:

cy.fixture('setting.json').then(settingFixture => {
    
    // Update your JSON object according to your context
    // ...

    // Stub your response with this JSON object updated
    cy.intercept("api/setting", settingFixture)
});


// Navigate to your URL
cy.visit('some where')