【发布时间】:2014-11-09 21:42:34
【问题描述】:
我们正在构建服务器上使用 Karma 和 PhantomJS 的组合运行我们的 Jasmine 单元测试。在 Chrome 上本地运行测试工作正常,错误不会在那里发生(这是一个不同的问题)。以下是正在发生的事情:
在执行的某一时刻,测试遇到“未定义”错误并直接停止:
PhantomJS 1.9.7 (Mac OS X) ERROR
TypeError: 'undefined' is not an object (evaluating 'dropScope.resize')
at /Users/nwinkler/workspaces/.../foo.js:250
PhantomJS 1.9.7 (Mac OS X): Executed 654 of 1221 ERROR (14.512 secs / 14.386 secs)
DEBUG [karma]: Run complete, exitting.
DEBUG [launcher]: Disconnecting all browsers
即使使用 --force 标志运行 karma,它仍然会在此时退出。
有没有办法让 Karma/PhantomJS 继续运行测试而不在此时停止?为什么 PhantomJS 不能从这个错误中恢复?
我不是在寻找 undefined 错误的解决方案,这是一个不同的主题 - 我只是想了解为什么 PhantomJS 和 Karma 在此时退出并且不继续进行剩余的单元测试。
【问题讨论】:
-
也在等待这个问题的答案...
-
无论浏览器如何,我的套件都会发生这种情况。我正在尝试测试 CKEditor,在我们的测试中,我们创建了确实会导致 js 错误的虚拟编辑器,但是当您尝试断言某种 dom 更改时,js 错误会导致 Karma 停止测试执行。
-
更新:当我们的套件超过 800 到 1000 多个测试时,这些错误似乎会堆积起来并导致关闭。我发现更改 files 数组中的加载顺序会有所帮助,但它会阻止我们使用 glob 来包含测试。 Karma 应该只在断言而不是错误时失败。
-
你使用 --single-run 标志吗?
-
@Boris 在我的情况下,标志是否是单一的并不重要
标签: javascript unit-testing jasmine phantomjs karma-runner