在 Node 8.x 及更高版本中调试 Protractor 测试
Debugging Protractor tests in Node 8.x and higher
我一直在寻找这个问题,但似乎找不到明确的答案。
基本上,现在编写量角器测试(使用 Node 8 或更高版本)时,一切都必须 async/awaited 才能调试测试。这个对吗?
作为一项测试,我确实将 await/async 放在了我的一项测试中。为了能够调试,它需要等待几乎每一行。如果我错过了一行,它就无法正确调试。这使得编写和调试测试变得非常卡顿。
我只是遗漏了一些明显的东西,还是这真的是我需要做的?
我发现以下视频似乎表明这是必需的。
是的async/await是未来的方向。您可以在 中看到,节点 8 破坏了您期望用于调试代码的许多内容。为了能够跟上 Protractor 的发展方向,您需要对所有现有测试进行重大更改。它很糟糕,但我会告诉你我发现有帮助的东西。
听起来您需要做的第一件事就是为 no-floating-promises 添加 lint 规则,它会告诉您缺少哪个等待。您甚至可以将其设置为只有您的 e2e 文件夹受此规则影响的位置,如果您不想更改整个应用程序,这会有所帮助。
既然现在一切都是承诺,我还建议更换任何 forEach
你拥有的涉及承诺的内容。虽然您认为它应该是连续的,但事实并非如此。几乎所有从浏览器返回的东西都是一个承诺,如果你的类型已经过时,那么一些没有标记为承诺的东西无论如何都会是。在这种情况下,for-of
循环可以作为一个不错的替代品。为什么? forEach
将同时启动循环中的每个承诺,导致 WebDriver 对您出错。
当你在做这件事时,如果你还没有升级 jasmine,你可能会想要升级它。如果你还没有使用 typescript 3.0,我发现 "jasmine-core": "2.99.1" 和 "@types/jasmine": "2.8.9" 会在你没有等待承诺时告诉你在一个期待中。它还会在您的期望中进行类型检查,这是对旧版本的加分项。这些是非常具体的版本,下一个版本似乎不适用于旧版本的打字稿。
最后,建议查看您的 protractor.conf 并将任何 beforeEach
、afterEach
等更改为异步并等待其中的任何内容。
我确定我忘记了一些事情,但这应该让你开始。
我一直在寻找这个问题,但似乎找不到明确的答案。
基本上,现在编写量角器测试(使用 Node 8 或更高版本)时,一切都必须 async/awaited 才能调试测试。这个对吗?
作为一项测试,我确实将 await/async 放在了我的一项测试中。为了能够调试,它需要等待几乎每一行。如果我错过了一行,它就无法正确调试。这使得编写和调试测试变得非常卡顿。
我只是遗漏了一些明显的东西,还是这真的是我需要做的?
我发现以下视频似乎表明这是必需的。
是的async/await是未来的方向。您可以在
听起来您需要做的第一件事就是为 no-floating-promises 添加 lint 规则,它会告诉您缺少哪个等待。您甚至可以将其设置为只有您的 e2e 文件夹受此规则影响的位置,如果您不想更改整个应用程序,这会有所帮助。
既然现在一切都是承诺,我还建议更换任何 forEach
你拥有的涉及承诺的内容。虽然您认为它应该是连续的,但事实并非如此。几乎所有从浏览器返回的东西都是一个承诺,如果你的类型已经过时,那么一些没有标记为承诺的东西无论如何都会是。在这种情况下,for-of
循环可以作为一个不错的替代品。为什么? forEach
将同时启动循环中的每个承诺,导致 WebDriver 对您出错。
当你在做这件事时,如果你还没有升级 jasmine,你可能会想要升级它。如果你还没有使用 typescript 3.0,我发现 "jasmine-core": "2.99.1" 和 "@types/jasmine": "2.8.9" 会在你没有等待承诺时告诉你在一个期待中。它还会在您的期望中进行类型检查,这是对旧版本的加分项。这些是非常具体的版本,下一个版本似乎不适用于旧版本的打字稿。
最后,建议查看您的 protractor.conf 并将任何 beforeEach
、afterEach
等更改为异步并等待其中的任何内容。
我确定我忘记了一些事情,但这应该让你开始。