我正在编写一个简单的qunit测试,它有一个控制器设置,带有一个数组中的几个项目
App.UploadController = Ember.Controller.extend({
to_upload: Ember.A([])
});
我向这个“to_upload”数组添加内容并在测试之间进行验证。一个问题我发现,如果我在我的测试“拆卸”中没有像这样“手动清除它”,它会保持这种状态(即使在每次拆解时调用App.reset()(调用destroy)
App.__container__.lookup("controller:upload").clear_files()
(清除文件是我在测试助手中添加的一个简单的猴子补丁 - 不是生产代码)
App.UploadController.reopen
clear_files: function() {
this.get('to_upload').clear();
}
这是我对qunit测试的推断
module "/upload",
teardown: function() {
App.reset()
App.__container__.lookup("controller:upload").clear_files()
}
答案 0 :(得分:1)
这可能与以下事实有关:将数组赋值给类定义中的属性使其成为类属性而不是实例属性。我不确定这是否记录在某处,但我已经读过几次了。如果我能找到它,我会用文档更新。
在此之前,您可以通过修改代码来证明我的理论。
App.UploadController = Ember.Controller.extend({
init: function(){
this.set('to_upload', Em.A([]));
this._super();
},
to_upload: null
});
您可以在步骤6中阅读http://codebrief.com/2012/03/eight-ember-dot-js-gotchas-with-workarounds/
我很确定这应该放在文档的某个地方,但我不确定最明显的地方。