@wdio/sync: TypeError: hook.apply 不是函数

如何解决@wdio/sync: TypeError: hook.apply 不是函数

我正在使用带有打字稿和 Jasmine 的 webdriverIO 6,最近(在将@wdio/sync 升级到 6.10.11 之后,我不确定这是否是巧合)我注意到我已经在测试运行期间出现了一些新错误 - 在每个“它”之前和之后:

Starting ChromeDriver 88.0.4324.96 on port 9515
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
[0-0] RUNNING in chrome - /dist/specs/main.spec.js
[0-0] 2021-01-28T14:28:25.059Z ERROR @wdio/sync: TypeError: hook.apply is not a function
    at execHook (/Users/marian/projects/***e2e/node_modules/@wdio/sync/build/executeHooksWithArgs.js:21:31)
[0-0] Error in "BeforeTest Hook"
hook.apply is not a function
[0-0] Opened url: ***
[0-0] 2021-01-28T14:28:28.826Z ERROR @wdio/sync: TypeError: hook.apply is not a function
    at execHook (/Users/marian/projects/-e2e/node_modules/@wdio/sync/build/executeHooksWithArgs.js:21:31)
[0-0] Error in "AfterTest Hook"
hook.apply is not a function

wdio/sync 升级到 6.11.00 后还是这样。

这是我的堆栈:

  "devDependencies": {
    "@types/jasmine": "^3.6.2","@types/node": "^14.14.20","@typescript-eslint/eslint-plugin": "^4.12.0","@typescript-eslint/parser": "^4.12.0","@wdio/cli": "^6.11.3","@wdio/devtools-service": "^6.11.0","@wdio/jasmine-framework": "6.6.3","@wdio/local-runner": "^6.11.3","@wdio/spec-reporter": "^6.11.0","@wdio/sync": "6.11.0","eslint": "^7.17.0","eslint-config-standard": "^16.0.2","eslint-plugin-import": "^2.22.1","eslint-plugin-node": "^11.1.0","eslint-plugin-promise": "^4.2.1","wdio-chromedriver-service": "^6.0.4"
  },"dependencies": {
    "@rpii/wdio-html-reporter": "~6.1.1","@slack/web-api": "^5.15.0","@wdio/reporter": "^6.11.0","chromedriver": "^88.0.0","typescript": "4.1.3","wdio-timeline-reporter": "^5.1.4"
  }

在 wdio.conf.js 中,我只使用了一个钩子,这不是导致问题的原因,因为它在最后只触发了一次 (onComplete()) 并且评论它没有任何区别。

我还使用了扩展 Wdioreporter 的 Customreporter,并在那里使用了 onTestPass() 和 onTestFail() 方法,但即使禁用整个报告器也没有任何区别。

我查看了 executeHooksWithArgs.js:21:31 但这对我来说没有任何意义,除了这部分负责钩子。

我尝试回到@wdio/sync 6.6.0(我在升级前使用的)失败了,在同一个文件中出现了类似的错误

ERROR @wdio/local-runner: Failed launching test session: TypeError: hooks.map is not a function
    at Object.executeHooksWithArgs (/Users/marian/projects/***/node_modules/@wdio/sync/build/executeHooksWithArgs.js:16:19)
(...) Error: Could not find job

困扰我的是我有一个具有类似设置的项目并且那里没有错误,我正在同时升级它们。我什至不知道去哪里看。

解决方法

所以在我发送这个之前,我深入研究了这个项目的 gitlab 历史以及我在上一段中提到的类似项目,我注意到了一个区别:

-    "@wdio/jasmine-framework": "6.6.3",+    "@wdio/jasmine-framework": "^6.11.0",

升级之后,问题就解决了。我希望我能写更多关于原因的东西,但说实话,我不知道究竟是什么原因造成的。

我所知道的是,如果您遇到类似问题,请尝试升级您的框架,它适用于 Jasmine,我不确定 Mocha 或 Cucumber 是否存在类似问题,但如果是 - 值得一试。

>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?