2

我有一个简单的模型类,我用它来存储一些全局状态

  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() 时,我注意到全局人员数组中的任何状态都在测试之间保持不变。我确实看到一个日志显示在测试之间调用了拆卸,它只是没有清除人数。如何在 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 中模拟“/”路由,一个错误会阻止你的模型钩子在你模拟 xhr 后再次触发(我希望在 RC7+ 中看到这个问题)

https://github.com/emberjs/ember.js/issues/2997

4

1 回答 1

2

App.reset只销毁 Ember 生成的对象。类不受影响。

您将需要扩展重置方法并手动执行此清理。

App = Ember.Application.create({
  reset: function() {
    this._super();
    App.Person.people = [];
  }
});
于 2013-07-11T04:33:05.110 回答