Testing 使用Karma进行EmberJS测试-使用PhantomJS但不使用chrome的runloop错误

Testing 使用Karma进行EmberJS测试-使用PhantomJS但不使用chrome的runloop错误,testing,ember.js,phantomjs,karma-runner,Testing,Ember.js,Phantomjs,Karma Runner,因此,我已经准备好了我可爱的测试系统,但在我的CI服务器中运行它时遇到了一个问题:出于某种原因,Ember测试正在抱怨运行循环,但只是在PhantomJS中运行时 这是业力输出: Waiting for previous execution... PhantomJS 1.9.7 (Linux) DEBUG: 'DEBUG: -------------------------------' PhantomJS 1.9.7 (Linux) DEBUG: 'DEBUG: Ember : 1.

因此,我已经准备好了我可爱的测试系统,但在我的CI服务器中运行它时遇到了一个问题:出于某种原因,Ember测试正在抱怨运行循环,但只是在PhantomJS中运行时

这是业力输出:

Waiting for previous execution...
PhantomJS 1.9.7 (Linux) DEBUG: 'DEBUG: -------------------------------'
PhantomJS 1.9.7 (Linux) DEBUG: 'DEBUG: Ember      : 1.4.0'
PhantomJS 1.9.7 (Linux) DEBUG: 'DEBUG: Ember Data : 1.0.0-beta.7+canary.b45e23ba'
PhantomJS 1.9.7 (Linux) DEBUG: 'DEBUG: Handlebars : 1.0.0'
PhantomJS 1.9.7 (Linux) DEBUG: 'DEBUG: jQuery     : 1.9.1'
PhantomJS 1.9.7 (Linux) DEBUG: 'DEBUG: -------------------------------'
Chrome 33.0.1750 (Mac OS X 10.9.1) DEBUG: 'DEBUG: -------------------------------'
Chrome 33.0.1750 (Mac OS X 10.9.1) DEBUG: 'DEBUG: Ember      : 1.4.0'
Chrome 33.0.1750 (Mac OS X 10.9.1) DEBUG: 'DEBUG: Ember Data : 1.0.0-beta.7+canary.b45e23ba'
Chrome 33.0.1750 (Mac OS X 10.9.1) DEBUG: 'DEBUG: Handlebars : 1.0.0'
Chrome 33.0.1750 (Mac OS X 10.9.1) DEBUG: 'DEBUG: jQuery     : 1.9.1'
Chrome 33.0.1750 (Mac OS X 10.9.1) DEBUG: 'DEBUG: -------------------------------'
Chrome 33.0.1750 (Mac OS X 10.9.1) DEBUG: 'DEBUG: For more advanced debugging, install the Ember Inspector from https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi'
PhantomJS 1.9.7 (Linux) ERROR
    Error: Assertion Failed: You have turned on testing mode, which disabled the run-loop's autorun. You will need to wrap any code with asynchronous side-effects in an Ember.run
    at /apps/contentpartnerpages/ember/app/bower_components/ember/ember.js:73
Chrome 33.0.1750 (Mac OS X 10.9.1) SLOW 0.743 secs: Chats Filter tests verify adding one chat to the store
Chrome 33.0.1750 (Mac OS X 10.9.1) SLOW 0.649 secs: Chats Filter tests verify number of missed chats
Chrome 33.0.1750 (Mac OS X 10.9.1) SLOW 0.763 secs: Chats Filter tests verify the sparklines update
Chrome 33.0.1750 (Mac OS X 10.9.1) SLOW 0.657 secs: Chats Filter tests verify global filters apply to child controllers
Chrome 33.0.1750 (Mac OS X 10.9.1) SLOW 0.783 secs: Chats Filter tests verify local filters work with global filters
PhantomJS 1.9.7 (Linux): Executed 0 of 0 ERROR (0.642 secs / 0 secs)
Chrome 33.0.1750 (Mac OS X 10.9.1): Executed 6 of 6 SUCCESS (4.301 secs / 3.966 secs)

正如你所看到的,他们显然是在使用chrome!我想不出会有什么不同,但如果有人能给我指出正确的方向,那就太棒了

奇怪的是,这只发生在chrome上,但问题很可能是在您的一个测试中,您遇到了异步问题。隔离并找到导致此问题的测试,然后查看它涉及代码的哪些部分。然后,您需要确保在该代码(包括激发的观察者)中,set、create、destroy和ajax调用被包装在ember运行循环中:

Ember.run(function(){
  // all call that results in asynchronous operations goes here
});
一旦这样做了,你的问题很可能会消失!另外,确保在等待异步调用完成的异步调用之后使用have“waitFor”或“anthen”函数(取决于测试框架)。让我知道这是否有效

资料来源:


在你的提问一小时后,我刚刚问了一个类似的问题-。我发现如果有AJAX或其他DOM更新,
waitFor
会有所帮助,但我不明白为什么浏览器会有所不同。所以我之前已经经历了所有这些事情,因为我刚刚开始进行Ember测试,在直接使用Qunit时,我有过一些测试。我现在将回顾所有这些,但让我明白的是:PhantomJS 1.9.7(Linux):执行0/0错误(0.642秒/0秒),它在开始测试之前就失败了!这个错误可能发生在测试之前的“before”语句中,但目前无法知道。您可以发布一个jsfdidle来查看您的代码吗?问题是我有一个发生在实际应用程序之外的$.getJson(),我只是没有注意到它。i、 它不在我的任何初始化函数中。最后使用了Ember.run,效果很好