在我的团队切换为使用哈希路由器之前。我一直在频繁地执行cy.url命令,以确保链接在整个应用程序中都导航到正确的url地址。现在,我们使用哈希路由cy.url不再产生字符串,而是产生函数。任何想法如何解决此问题或发生这种情况的原因?
我在整个cypress测试运行程序中遇到错误,如:AssertionError:被测试的对象必须是数组,对象或字符串,但是未给定 所以我记录了typeof结果console.log(typeof(cy.url))并将函数打印到控制台。
.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')
})
}
答案 0 :(得分:0)
这应该产生一个字符串:
const returnedUrl = null
cy.url().then(url => {
returnedUrl = url;
});
Cypress命令是异步的,必须紧跟.then()
后才能产生有用的返回值。
有关更多信息,请参阅此Github问题: https://tortoisegit.org/docs/tortoisegit/tgit-dug-conflicts.html
答案 1 :(得分:0)
我遇到了同样的问题。我的解决方案如下。
cy.url().then(($base_url) => {
let id = $base_url.substr($base_url.lastIndexOf('/'),$base_url.length)
cy.log("The id is " + id);
})
对我有用。