网站搜索

typescript - 在 Cypress 中创建包含断言/链式命令的自定义命令


我希望创建一个包含状态码断言的自定义命令:

cy.wait('@interceptedEndpoint')
    .its('response.statusCode')
    .should('eq', 200)

最后两行是我想放在自定义命令里的内容

.its('response.statusCode')
.should('eq', 200)

我最初的想法如下,但显然行不通

Cypress.commands.add('checkResponse', {prevSubject: 'element'}, () => {
    .its('response.statusCode')
    .should('eq', 200)
})

我在上面缺少什么才能使自定义命令创建正确?

编辑:除了Udo.Kier的回答之外,我还需要将prevSubject设置为true,以使其接受预期断言的响应。

答案#1

你可以尝试添加 subject 参数,

Cypress.commands.add('checkResponse', {prevSubject: true}, (subject) => {
  cy.wrap(subject)
    .its('response.statusCode')
    .should('eq', 200)
})

...

cy.wait('@interceptedEndpoint').checkResponse()

或者,在自定义命令内部等待时:

Cypress.commandsCommands.add('waitAndCheckResponse', (subjectAlias) => {
  cy.wait(subjectAlias)
    .its('response.statusCode')
    .should('eq', 200);
})

...

cy.waitAndCheckResponse('@interceptedEndpoint')