Testing 具有此*的Cypress访问别名不';t工作

Testing 具有此*的Cypress访问别名不';t工作,testing,automated-tests,this,cypress,arrow-functions,Testing,Automated Tests,This,Cypress,Arrow Functions,我在理解Cypress文档方面有点问题。在中,他们添加了使用this.*reference使用fixture访问alias的用例: beforeach(()=>{ //为用户设置别名 cy.fixture(“users.json”).as(“users”); }); 它(“以某种方式利用用户”,函数(){ //访问用户属性 const user=this.users[0]; //确保标题包含第一个 //用户名 cy.get(“header”)。应(“包含”,user.name); }); 但是

我在理解Cypress文档方面有点问题。在中,他们添加了使用
this.*
reference使用fixture访问alias的用例:

beforeach(()=>{
//为用户设置别名
cy.fixture(“users.json”).as(“users”);
});
它(“以某种方式利用用户”,函数(){
//访问用户属性
const user=this.users[0];
//确保标题包含第一个
//用户名
cy.get(“header”)。应(“包含”,user.name);
});
但是当我试图复制它时,我不断得到错误:
无法读取未定义的
的属性“SOAP\u body”

我不明白我的错误在哪里。这是我的规格:

//
描述(“SOAP API测试”,()=>{
在每个之前(()=>{
cy.fixture(“SOAP_body.xml”).as(“SOAP_body”);
});
it(“任务测试”,功能(){
const body=this.SOAP\u body;
赛义德请求({
方法:“张贴”,
标题:{
“内容类型”:“text/xml;charset=utf-8”,
授权:“令牌myVerySecretToken”,
SOAPAction:“http://tempuri.org/TrackingFull",
},
网址:`https://path.of/the/application.asmx`,
身体:身体,,
failOnStatusCode:false,
})。然后((结果)=>{
期望(结果状态)等于(200);
task(“XMLtoJSON”,result.body)。然后((响应)=>{
期待(
响应。元素[0]。元素[1]。元素[0]。元素[0]
.elements[1]。elements[0]。elements[0]。elements[0]
.elements[0]。元素[0]。文本
).使…相等(“某物”);
});
});
});
});
还有我的任务

/**
*@type{Cypress.PluginConfig}
*/
module.exports=(打开,配置)=>{
关于(“任务”{
XMLtoJSON(XML_体){
var convert=require(“xml js”);
让result=convert.xml2js(XML_体{
紧凑型:错误,
空间:2,
});
返回结果;
},
});
};
在常量定义之前使用
debugger
,我可以看到变量未定义


我确实知道
cy.get()
,但我只是想学习如何使用
this.*
模式。

摆弄代码后,我意识到我在步骤定义中使用了
箭头函数

it(“使用任务进行测试”,()=>{…}

我之所以这么做,仅仅是因为我在VSC中使用了很多代码片段,而从来没有注意到使用的语法

因此,在看到它之后,我记得它永远不会起作用,正如上面所说:

箭头函数表达式是传统表达式的紧凑替代 函数表达式,但有限制,不能全部使用 情况

差异和限制:

  • 没有自己对
    超级
    的绑定,不应用作
    方法
  • 没有
    参数
    ,或
    新建.target
    关键字
  • 不适用于
    调用
    应用
    绑定
    方法,这些方法通常依赖于建立
    范围
  • 不能用作
    构造函数
  • 不能在其主体内使用
    屈服
解决方案很简单,用函数定义替换它:

it(“使用任务进行测试”,函数(){…}

这个
上下文正如预期的那样


历史的寓意是,不要盲目相信你的代码编辑器(即使它是VSC)

我知道存在,但不幸的是,他们屈服于
cy.get()
usageit对我来说更糟,因为他们在cypress网站上。。。