Cypress请求主体拦截并与fixture/cont变量进行比较



如何截取整个请求体并将其与fixture进行比较?

我试过了:

it('Check if Frontend requestbody is the correct', () => {

cy.intercept('GET', '**/api/assessmenttestreference').as('ItemMove')
cy.wait('@ItemMove').its('request.body')
.to.equal({fixture:'MovedItemStructure.json'})
});

对于这个目标,有一个有效的或替代的解决方案吗?

使用routeHandler函数,该函数允许您访问请求的所有属性。

cy.fixture('MovedItemStructure.json').then(fixture => {
cy.intercept('GET', '**/api/assessmenttestreference', (req) => {  
expect(req.body).to.deep.eq(fixture)
})
.as('ItemMove')
})

如果您想比较响应正文,您可以嵌套另一个回调

cy.fixture('MovedItemStructure.json').then(fixture => {
cy.intercept('GET', '**/api/assessmenttestreference', (req) => {  
req.continue((res) => {
expect(res.body).to.deep.eq(fixture)
})
})
.as('ItemMove')
})

要对照夹具进行检查,必须使用deep.equal

const movedItemStructure = require('/pathToFixtures/MovedItemStructure.json')
it('Check if Frontend requestbody is the correct', () => {
cy.intercept('GET', '**/api/assessmenttestreference').as('ItemMove')
// action to trigger request
cy.wait('@ItemMove').its('request.body')
.should('deep.equal', movedItemStructure)
});
感谢TesterDick。我把他对以下的回答结合起来
cy.fixture('MovedItemStructure.json').then(fixture => {
cy.intercept('PUT', '**/api/assessmenttest/*', (req) => {
expect(req.body).to.deep.eq(fixture)
req.reply({ fixture: 'MovedItemStructure.json' })
}).as('ItemMove')
})

最新更新