当加载网页时,我试图拦截API调用两次(使用不同的主体((使用别名并使用塞浦路斯等待方法(。我注意到它只调用了两次第二次拦截。在柏树中有没有一个内置的解决方案,我们可以在加载网页时使用它来拦截同一个api调用两次?
cy.intercept('POST', '/SomeUrl', {
statusCode: 200,
fixture: 'jsonname.json',
times: 1,
}).as('alias');
cy.intercept('POST', '/SomeUrl', {
statusCode: 200,
fixture: 'jsonname2.json',
times: 1,
}).as('alias2');
cy.visit('https://www.url.com')
.wait('@alias')
.wait('@alias2')
Cypress UI中的Routes输出向我们显示了以下结果:
方法 | URL | 存根别名 | #
---|---|---|
POST | **/SomeUrl | 是别名 | -[/tr>
POST | **/SomeUrl | 是别名2 |
您可以等待一个别名数组(https://docs.cypress.io/api/commands/wait#Aliases)。
因此,您可以尝试以下代码。
cy.visit('https://www.url.com')
cy.wait(['@alias', '@alias2'])
使用解决
cy.intercept('POST', '/SomeUrl', (req) => {
if (req.body.Objectstatus === 1) {
req.reply({
statusCode: 200,
fixture: 'alias.json',
});
}
if (req.body.Objectstatus === 1) {
req.reply({
statusCode: 200,
fixture: 'alias2.json',
});
}
}).as('alias');
});