我有此代码:
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
断言,在其他情况下则不执行断言,例如:
在继续测试之前,如何确保自定义命令的回调已完全执行?
答案 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')
})
答案 1 :(得分:0)
附带说明:使用这样的自定义命令可能是一个过大的杀伤力,因为通过包裹一根衬板并不能真正获得任何收益。看看:https://docs.cypress.io/api/cypress-api/custom-commands.html#Best-Practices