从夹具错误中提取数据:无法读取未定义的属性“键”

问题描述

当我尝试将图片中的数据提取到我的测试用例中时,我得到了未定义的无法读取属性 'key' 错误信息。

代码: describe('我的第一次测试',() => {

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”

enter image description here

解决方法

要访问 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)
  })     
})