我有一个简单的模型类,我用
存储一些全局状态 App.Person = Ember.Object.extend({
firstName: '',
lastName: ''
});
App.Person.reopenClass({
people: [],
add: function(hash) {
var person = App.Person.create(hash);
this.people.pushObject(person);
},
remove: function(person) {
this.people.removeObject(person);
},
find: function() {
var self = this;
$.getJSON('/api/people', function(response) {
response.forEach(function(hash) {
var person = App.Person.create(hash);
Ember.run(self.people, self.people.pushObject, person);
});
}, this);
return this.people;
}
});
当我使用RC6和ember-testing调用App.reset()时,我注意到全局people数组中的状态在测试之间保持不变。我确实看到一个日志,显示在测试之间调用拆解,它只是不清除#人。如何在QUnit拆解中重置它?
module('integration tests', {
setup: function() {
Ember.testing = true;
this.server = sinon.fakeServer.create();
this.server.autoRespond = true;
Ember.run(App, App.advanceReadiness);
},
teardown: function() {
this.server.restore();
App.reset(); //won't kill that global state ...
}
});
更新
如果你想在RC6中模拟“/”路径,一个bug会阻止你的模型钩子在你模拟xhr之后再次触发(我希望看到这个在RC7 +中修复)
答案 0 :(得分:2)
App.reset
只会摧毁Ember生成的物体。课程没有改变。
您需要扩展重置方法并手动进行清理。
App = Ember.Application.create({
reset: function() {
this._super();
App.Person.people = [];
}
});