在突然的Ember升级后测试完全失败

时间:2017-01-16 13:39:22

标签: unit-testing ember.js phantomjs qunit ember-qunit

我正在开发一款在Ember 2.2上停留一段时间的应用程序,我们终于花时间升级到Ember 2.10。在修复代码中的所有弃用警告并相应地升级某些依赖项的版本之后,我们终于让应用程序在浏览器中100%工作。然而,当我们现在运行余烬测试时,它们以致命的方式失败(即测试甚至没有运行)。

这是ember test命令的输出:

$ ember test
cleaning up...
Built project successfully. Stored in "/Users/ernesto/code/my-app/frontend/tmp/core_object-tests_dist-oanj8mZd.tmp".
not ok 1 Browser "phantomjs /Users/ernesto/code/my-app/frontend/node_modules/testem/assets/phantom.js http://localhost:7357/4233/tests/index.html?hidepassed" failed to connect. testem.js not loaded?

1..1
# tests 1
# pass  0
# skip  0
# fail  1
Not all tests passed.
Error: Not all tests passed.
    at EventEmitter.App.getExitCode (/Users/ernesto/code/my-app/frontend/node_modules/testem/lib/app.js:434:15)
    at EventEmitter.App.exit (/Users/ernesto/code/my-app/frontend/node_modules/testem/lib/app.js:189:23)
    at /Users/ernesto/code/my-app/frontend/node_modules/testem/lib/app.js:103:14
    at tryCatcher (/Users/ernesto/code/my-app/frontend/node_modules/testem/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/Users/ernesto/code/my-app/frontend/node_modules/testem/node_modules/bluebird/js/release/promise.js:510:31)
    at Promise._settlePromise (/Users/ernesto/code/my-app/frontend/node_modules/testem/node_modules/bluebird/js/release/promise.js:567:18)
    at Promise._settlePromise0 (/Users/ernesto/code/my-app/frontend/node_modules/testem/node_modules/bluebird/js/release/promise.js:612:10)
    at Promise._settlePromises (/Users/ernesto/code/my-app/frontend/node_modules/testem/node_modules/bluebird/js/release/promise.js:691:18)
    at Async._drainQueue (/Users/ernesto/code/my-app/frontend/node_modules/testem/node_modules/bluebird/js/release/async.js:133:16)
    at Async._drainQueues (/Users/ernesto/code/my-app/frontend/node_modules/testem/node_modules/bluebird/js/release/async.js:143:10)
    at Immediate.Async.drainQueues [as _onImmediate] (/Users/ernesto/code/my-app/frontend/node_modules/testem/node_modules/bluebird/js/release/async.js:17:14)
    at processImmediate [as _immediateCallback] (timers.js:383:17)

我可以从此错误消息中提取的唯一线索就是testem.js not loaded?。如何检查这是否正在发生,如果是,为什么不加载,如何再次加载?

如果有人能够对这里发生的事情有所了解,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

好的,我最终找到了问题的原因,所以我在这里回答这个问题是为了完整性和未来的参考。

tests/index.html文件需要进行一些更改才能正确解决Ember版本更改后testem.js文件所在的位置。所以不要这样:

<script src="testem.js" integrity=""></script>

我必须在/ attr值前添加src。结果看起来像这样:

<script src="/testem.js" integrity=""></script>

我们还有其他一些问题要解决,但我们以前遇到的致命失败事件已经消失了。