在进行测试之前,如何等待传递给Cypress自定义命令的回调完成?

时间:2019-06-20 17:02:45

标签: cypress

我有此代码:

cy.visit(Cypress.env('frontendUrl'))
  .pathShould('be', '/login')
  .log('Reached')

我的自定义命令pathShould如下:

Cypress.Commands.add('pathShould', (chain, path) => {
  cy.location('pathname', { timeout: 20000 }).should(chain, path);
});

在某些情况下执行should断言,在其他情况下则不执行断言,例如:

enter image description here

在继续测试之前,如何确保自定义命令的回调已完全执行?

2 个答案:

答案 0 :(得分:1)

主要问题是没有名为be的断言。

cy.should('be', '')不会执行任何操作-它是not a valid assertion。您可能正在寻找cy.should('eq'...)

这对我有用:

Cypress.Commands.add('pathShould', (chain, path) => {
  return cy.location('pathname', { timeout: 20000 }).should(chain, path);
});

it('', () => {
  cy.visit('http://example.com')
  .pathShould('eq', '/')
  .log('Reached')
})

passing test screenshot

答案 1 :(得分:0)

附带说明:使用这样的自定义命令可能是一个过大的杀伤力,因为通过包裹一根衬板并不能真正获得任何收益。看看:https://docs.cypress.io/api/cypress-api/custom-commands.html#Best-Practices