赛普拉斯夹具:尝试使用别名时出现ReferenceError

时间:2019-06-04 13:41:38

标签: cypress

我是赛普拉斯的新手,我试图在代码中使用固定装置,并且如果我使用aliasnamename.variablename方式,还会不断收到ReferenceError。

describe('Fixture Demo', function() {

    it('This works', function() {
      cy.fixture('admindetails').then((user)  => {
        cy.log(user.username)
      }) 
    })

    it('This does not work', function() {
      cy.fixture('admindetails').as(user)
      cy.log(user.username)
    })

  })

我同时包括了有效的方法和无效的方法。我的问题是如何使用别名简单地使用user.username?我什至尝试了@ user.username,它不起作用。我正在尝试进行第二次测试。任何帮助将不胜感激。预先感谢。

1 个答案:

答案 0 :(得分:0)

您的第二个测试用例不是执行此操作的有效方法,您的第一个测试是正确的方法。

user只是一个普通的Javascript变量。在第二个测试中,您尝试在定义变量之前使用user变量,这就是为什么会出现错误的原因。

这是使用别名from the docs的正确方法:

cy.fixture('admindetails').as('usersJSON')
cy.route('GET', '/users/**', '@usersJSON') // or another command that supports aliasing

您的第一个测试用例也很好用,如果以后需要夹具的内容,它们将存储为user

cy.fixture('admindetails').then((user) => {
  cy.log(user.username)
  /** add any other test code that needs `user` here **/
}) 
/** write the rest of your tests here, they will execute after the .then block **/