Testing Ember.js Mocha测试使用异步代码随机失败
我正在用Mocha为一个Ember.js应用程序编写测试。我用的是Teddy Zeenny的ember摩卡适配器 一旦涉及到承诺,测试就会随机失败。我通常会遇到这样的错误:Testing Ember.js Mocha测试使用异步代码随机失败,testing,ember.js,promise,mocha.js,Testing,Ember.js,Promise,Mocha.js,我正在用Mocha为一个Ember.js应用程序编写测试。我用的是Teddy Zeenny的ember摩卡适配器 一旦涉及到承诺,测试就会随机失败。我通常会遇到这样的错误: Error: Assertion Failed: You cannot defer readiness since the `ready()` hook has already been called. 这是一本书。它包含10次相同的测试,通常失败(使用Firefox和Chromium进行测试) 同样的测试在QUnit上运
Error: Assertion Failed: You cannot defer readiness since the `ready()` hook has already been called.
这是一本书。它包含10次相同的测试,通常失败(使用Firefox和Chromium进行测试)
同样的测试在QUnit上运行良好(可能是偶然的:)()。我怎样才能用摩卡咖啡做到这一点?我尝试在一个Ember.run()调用中包装这个承诺,但它没有解决问题
同样的问题也存在,但是Teddy Zeenny提出的修正JS Bin对我来说也失败了。真正的唯一原因是qunit有效而mocha无效,是因为您在每次测试前运行重置,而不是在每次测试后运行重置
代码有3个问题:
before()
中mocha.run()
应该这样调用:
Ember.$(function() {
mocha.run();
});
Teddy Zeenny在中找到了这个问题的解决方案。事实上,我在将测试转换为QUnit时犯了一个错误,感谢您指出这一点。我想在测试后调用App.reset()。我更正了使用teardown()而不是setup()的错误,它仍然有效。不管怎么说,您的更改对我来说仍然失败(第一个测试用例的断言失败错误消息):(.gotcha,每次在chrome中它都对我有效,我甚至没有尝试firefox,但在那里它似乎更零星