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

时间:2019-06-21 20:44:26

标签: javascript e2e-testing qa cypress regression-testing

在我的团队切换为使用哈希路由器之前。我一直在频繁地执行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')
 })
}

2 个答案:

答案 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);
       })

对我有用。