gpt4 book ai didi

javascript - 在 Chrome 中获取间歇性测试失败

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:42:06 26 4
gpt4 key购买 nike

更新 2:

在忘记这件事一个星期(并且生病了)之后,我仍然无法理解这里。唯一的消息是我在 Safari 和 Firefox 中重新运行了测试,现在 Safari 在这些测试中总是失败,而 Firefox 总是超时。我假设我在某处改变了一些东西,但我不知道在哪里。

我也越来越确定某处存在时间问题。可能只是代码在不应该的地方异步,但更有可能是某些东西被打断了。

更新:

我对查找实际错误不太感兴趣,而更感兴趣的是为什么它是间歇性的。如果我能找出原因,我可能会找到错误,或者至少重写代码以避免错误。

长话短说:

我正在使用 Karma(带有 Webpack 和 Babel)在 Chrome 中运行测试,其中大部分都很好,但出于某种原因,有 7 个测试会间歇性失败。

详情:

所以!上类!当我在调试选项卡中运行它时,前六个测试大部分成功,并且可能失败。不过,正常运行时失败率似乎更高。这六个测试是相关的,因为它们在运行特定方法后都失败了,该方法作为某些 Backbone 模型的安全 delete() 。基本上它的意思是检查并清除()要删除的模型中的所有链接模型,如果不能这样做则返回 false。如果失败率是 100%,我相信我会发现错误并将其排除,但我唯一知道的是它与尝试访问或更改已删除的模型有关,这看起来像这是一个时间问题......?有些东西正在异步运行,但也许不应该......?我不知道如何解决它...

第七个测试稍微容易一些。它使用 Jasmine-Jquery 检查 dom 元素(开始时为空)在我更改某些内容后是否在内部获取另一个 div。它旨在测试 Bootstrap 的警报系统是否正确实现,但已被大量简化以试图找出它失败的原因。如果我将它作为 gulp 任务运行,这个测试总是失败,但如果我打开调试选项卡并手动重新运行测试,它总是成功。所以我的假设是 Chrome 第一次没有正确呈现 DOM,但如果我在调试选项卡中重新运行它会修复它......?

TMI:

当我说我打开调试选项卡并手动重新运行测试时,当然,我仍在同一个“gulp 测试”任务中。我还使用了“gulp testonce”,但唯一的变化是它启用了 singleRun 并启用了 HTML 报告程序。它显示了完全相同的模式,但我无法在那里检查调试页面,因为浏览器在测试后退出。

使用 html 报告程序的前 6 个测试之一的输出。

Chrome 47.0.2526 (Mac OS X 10.11.2) model library: sentences: no longer has any elements after deleting the sentence and both elements FAILED
Error: No such element
at Controller._delete (/Users/tom/dev/Designer/test/model.spec.js:1344:16 <- webpack:///src/lib/controller.js:107:12)
at Object.<anonymous> (/Users/tom/dev/Designer/test/model.spec.js:143:32 <- webpack:///test/model.spec.js:89:31)

使用 html 报告器的测试 7 的输出。

Website tests &raquo; Messaging system
Expected ({ 0: HTMLNode, length: 1, context: HTMLNode, selector: '#messagefield' }) not to be empty.
at Object.&lt;anonymous&gt; (/Users/tom/dev/Designer/test/website.spec.js:163:39 &lt;- webpack:///test/website.spec.js:109:37)

现在,您应该知道的第一件事是,我当然尝试过其他浏览器,但 Safari 的模式与 Chrome 完全相同,而 Firefox 也给我同样的错误,但错误消息最终占用了 80MB 的磁盘空间我的 html 记者和这么多时间来完成,如果它甚至完成。大多数时候它只是断开连接——最终速度更快。所以我最终只是使用 Chrome 来尝试找到这个特定的错误,这个错误已经困扰了我一个星期了。

来源

测试: https://dl.dropboxusercontent.com/u/117580/model.spec.js.html https://dl.dropboxusercontent.com/u/117580/website.spec.js.html测试输出(由于错误是间歇性的,这实际上只是一个例子):https://dl.dropboxusercontent.com/u/117580/output.html

最佳答案

好的,现在所有测试都成功了。我认为这是答案:有的测试叫controller,有的测试叫window.controller。这包括一些 reset() 和 remove() 命令。重写后还是有失败,于是又重写了一遍。作为重写的一部分,我决定通过 window.* 进行所有调用,然后重写所有测试成功。

关于javascript - 在 Chrome 中获取间歇性测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34651369/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com