Pulling data from fixture error : Cannot read property 'key' of undefined

Pulling data from fixture error : Cannot read property 'key' of undefined

当我试图将图片中的数据提取到我的测试用例中时,我得到了 Cannot read 属性 'key' of undefined 错误信息。

代码: 描述('My First Test',()=> {

beforeEach(function() {
    cy.fixture("DataFile").then((data) => {
      this.key = data
      
    })
  })

it('Does not do much!', () => {
    cy.visit('https://rahulshettyacademy.com/angularpractice/')
    cy.get("form input[name='name']").type(this.key.Name)
    cy.get("form input[name='email']").type(this.key.Email)
   cy.get("#exampleInputPassword1").type(this.login.key.Password)
   cy.get('select').select(this.key.Gender)

})

错误: 无法读取未定义的 属性 'key'

要访问 this 的属性,请使用函数而不是箭头函数

it('Does not do much!', function() {              // function here gets correct 'this'
  cy.visit('https://rahulshettyacademy.com/angularpractice/')
  cy.get("form input[name='name']").type(this.key.Name)
  cy.get("form input[name='email']").type(this.key.Email)
  cy.get("#exampleInputPassword1").type(this.login.key.Password)
  cy.get('select').select(this.key.Gender)
})

或者您可以将夹具移动到更靠近测试的位置(不太理想,但总体上不是很多)

it('Does not do much!', () => {
  cy.fixture("DataFile").then((data) => {
    cy.visit('https://rahulshettyacademy.com/angularpractice/')
    cy.get("form input[name='name']").type(data.key.Name)
    cy.get("form input[name='email']").type(data.key.Email)
    cy.get("#exampleInputPassword1").type(data.login.key.Password)
    cy.get('select').select(data.key.Gender)
  })     
})