提问人:user3583204 提问时间:5/13/2023 更新时间:5/13/2023 访问量:31
描述,它,之前,之后,箭头函数,未命名的函数和“这个”,效用还是徒劳?[复制]
Describe, It, Before, After, Arrow Functions, unnamed functions and "this", utility or futility? [duplicate]
问:
我们目前正在更新我们的 linting,以匹配前端开发人员的 linting 想法。主要是因为他们希望能够查看和理解我们的测试代码。我们都在用 JavaScript 工作。
没什么大不了的...或者是吗?
我们发现,以我们执行 WDIO “Describes” 和 “Its” 的“旧方式”,我们可以简单地使用一个未命名的函数,并且它只是工作。 我们已经开始更新箭头函数,从表面上看,它们“看起来是一样的”,但工作方式并不相同。
我们的问题出在“this”的使用上......
我们使用的是“重试”方法,并在配置文件中设置重试次数。在某些测试中,我们需要知道当前运行是第一次运行还是第一次重试。
为此,我们抓取它将告诉我们“0”表示主要运行,或“1”表示第一次重试,或“2”表示第二次重试,依此类推。
你不知道吗?“未命名函数”让我们可以毫无问题地使用“this”。linting 给了我们一个关于“没有未命名函数”的警告......
当我们将其转换为“箭头函数”时,我们得到“this.wdioRetries === undefined”。“this”在箭头函数的作用域中不存在。但是 linting 喜欢箭头功能,即使测试现在失败了。
有时,我们还需要覆盖某些测试值,例如默认超时。如果没有访问“this.test”,我们就无法做到这一点......it('No Place Like Home', async function () {
this.wdioRetries
所以。问题是,我们如何在箭头函数中得到“this”?有没有办法传进去?一种通过另一种方式(进程、浏览器、驱动程序......一些内置函数来调用()?const thing = whatever.getThis()
或者,这是徒劳的?我们应该继续使用未命名的函数吗?
我试过了:我试过简单的功能,等等。问题在于范围,它需要处于 TEST 级别,而不是 GLOBAL。
希望其他人在我之前开辟了这条道路并找到了解决方案。it('No Place Like Home', async () => {
it('No Place Like Home', async (this) => {
it('No Place Like Home', async this => {
答: 暂无答案
上一个:代码似乎无法按预期工作 [重复]
下一个:使用此函数函数到不同的文件中
评论
this
箭头函数的工作方式与传统函数不同。因此,您不应该对使用 .this
this
this
this
let
this