然后yong 的回答对我不起作用。原因是您需要为 jasmine 提供一个包装器,而不是 jasmine 本身。
这就是 Protractor 7.0.0 和 jasmine 3.10.0 对我有用的方法。
使用 Protractor 的 jasmine2 适配器工作。
- 指导量角器使用茉莉花3
这很容易通过纱线分辨率完成,例如
"resolutions": {
...
"**/jasmine": "^3.10.0",
},
- 创建一个 NOOP jasminewd2 文件
exports.init = () => {
console.log('Using mock-jasminewd2 to remove jasminewd2 from protractor');
};
并指示量角器使用它而不是 jasminewd2,再次使用 yarn 工作空间
"resolutions": {
...
"**/jasminewd2": "file:./packages/mock-jasminewd2"
},
当我们使用 jasmine3 的适当异步匹配器时,我们不需要 jasminewd2
-
将所有在“pass”中返回 promise 的自定义匹配器重写为正确的 jasmine 3 异步匹配器,例如
https://github.com/tepez/jasmine-protractor-matchers/commit/c6e2092d1f925a415b1192303b57da4a5790439a
-
使用 jasmine.addAsyncMatchers 而不是 jasmine.addMatchers 添加自定义匹配器
-
重写所有期望:
await expect(...) => await expectAsync(...)
- 禁用 jasmine 的随机 onPrepare
jasmine.getEnv().configure({
random: false,
});
这不能通过在 jasmineNodeOpts 中传递随机来完成
请注意,protractor 的 master 分支的版本 6 代码与版本 7 非常不同
这更像是 5。
所以浏览它的代码https://github.com/angular/protractor/tree/7.0.0
而不是主分支https://github.com/angular/protractor
这可能会令人困惑,因为版本 6 does disable 茉莉花的随机性