Ember.js 如何在ember 1.3.1中推迟/推进基于配置的集成测试?
我对ember.js 1.3.1进行了基本的QUnit集成测试Ember.js 如何在ember 1.3.1中推迟/推进基于配置的集成测试?,ember.js,Ember.js,我对ember.js 1.3.1进行了基本的QUnit集成测试 test("try to get html", function() { App.Bootstrap.init(); visit("/").then(function() { //do some basic asserts here }); }); 诀窍是我的App.Bootstrap.init(在应用程序启动之前)进行一些配置设置 问题是,由于应用了“延迟路由”,我不能再推迟/推进自己了,因为我得到了错误 “
test("try to get html", function() {
App.Bootstrap.init();
visit("/").then(function() {
//do some basic asserts here
});
});
诀窍是我的App.Bootstrap.init(在应用程序启动之前)进行一些配置设置
问题是,由于应用了“延迟路由”,我不能再推迟/推进自己了,因为我得到了错误
“由于ready()
钩子已被激活,因此不能延迟准备就绪
称为“
下面是我的测试助手所做的(这里是基本的余烬测试内容)
注意-这在生产环境中很好地工作,因为延迟/提前工作与正常情况一样(在下面的初始值设定项中调用此init方法)。下面是在我的测试中进行的monkey补丁,因为它在我有机会模拟任何xhr之前运行(因为这通常会触发一个xhr,所以我决定在每次测试运行之前自己进行monkey补丁并调用init)
在此之后,visit
助手将调用App.advanceReadiness()代码>在第一次调用中
确保您的测试设置中没有先进性,如下所示:
module('my module', {
setup: function() {
//...
// App.advanceReadiness(); can be removed
}
});
否则您将收到该错误
App.setupForTesting();
App.injectTestHelpers();
App.initializer({
name: 'bootstrap',
initialize: function() {
App.Bootstrap.init();
}
});
module('my module', {
setup: function() {
//...
// App.advanceReadiness(); can be removed
}
});