cy.url 未按预期返回字符串

Jus*_*ald 5 javascript regression-testing e2e-testing cypress

在改用哈希路由器之前,我经常执行该cy.url命令,以确保整个应用程序中的链接导航到正确的 URL 地址。现在我们使用哈希路由cy.url不再产生字符串,而是产生函数。有什么想法可以解决这个问题或发生这种情况的原因吗?

我在 cypress 测试运行程序中遇到错误,例如:

断言错误:测试的对象必须是数组、对象或字符串,但未定义

所以我记录了 typeof 结果console.log(typeof(cy.url))并将函数打印到控制台。

cy.get(dataCyButtonAttribute)
    .should('be.visible')
    .click()
  console.log(typeof(cy.url))
  cy.url().then(url => {
    const categoryId = url.split(`${linkType}/`)[1]
    const category = url.split('admin/')[1]
    expect(category).to.contain(linkType)
    expect(categoryId).to.equal('new')
  })
}
Run Code Online (Sandbox Code Playgroud)

小智 7

这应该产生一个字符串:

const returnedUrl = null
cy.url().then(url => {
  returnedUrl = url;
});
Run Code Online (Sandbox Code Playgroud)

Cypress 命令是异步的,必须遵循.then()才能产生有用的返回值。

您可以参考此 Github 问题以获取更多信息: https ://github.com/cypress-io/cypress/issues/2150