Ember.js Mocha测试随机异步代码失败

时间:2014-04-03 14:25:55

标签: testing ember.js promise mocha

我正在使用Mocha为Ember.js应用程序编写测试。我使用Teddy Zeenny的ember-mocha-adapter。

一旦涉及承诺,测试就会随机失败。我经常收到这个错误:

Error: Assertion Failed: You cannot defer readiness since the `ready()` hook has already been called.

这是JS Bin testcase。它包含10次相同的测试,通常会失败(使用Firefox和Chromium测试)。

相同的测试与QUnit运行良好(可能是偶然的:))(JS Bin testcase)。如何使用Mocha进行此操作?我尝试在Ember.run()调用中包装promise,但它没有解决问题。

another question有同样的问题,但Teddy Zeenny提出的更正的JS Bin也不适合我。

2 个答案:

答案 0 :(得分:1)

代码有3个问题:

  1. 它不应该调用mocha.setup(),现在在README中解释。
  2. 设置Ember.js进行测试的函数调用应该在任何Mocha回调之外发生,而不是before()
  3. 应该像这样调用
  4. mocha.run()

    Ember.$(function() {
      mocha.run();
    });
    
  5. 这是固定的JS Bin testcase

    Teddy Zeenny在teddyzeenny/ember-mocha-adapter#18找到了解决这个问题的方法。

答案 1 :(得分:0)

真的是qunit工作的唯一原因而且mocha不是因为你在每次测试之前和每次测试之后都在重置。

http://emberjs.jsbin.com/nusewoqi/4/edit