在添加“需求”之前,控制器看起来像这样
var MyController = Ember.ArrayController.extend({
wat: function() {
return true;
}.property()
});
这让我可以编写非常简单的单元测试
test('wat always returns true ... huh', function() {
var controller = new MyController();
var wat = controller.get('wat');
ok(wat);
});
但是在我添加了“需求”块之后......
var MyController = Ember.ArrayController.extend({
needs: 'application',
wat: function() {
return true;
}.property()
});
“new up”无效,QUnit / ember会抛出错误
“请确保此控制器已使用容器实例化”
不说“拉入/使用ember-qunit”我还有其他选择吗?我可以简单地用“存根”来满足容器要求吗?
答案 0 :(得分:1)
使用ember-qunit(我不是最大的粉丝)你可以使用this.subject()
抓住控制器并设置模块如下:
moduleFor('controller:comments', 'Comments Controller', {
needs: ['controller:post']
});
http://emberjs.com/guides/testing/testing-controllers/#toc_testing-controller-needs
如果您没有使用Ember Qunit,您可以使用容器来获取控制器(Initialized dependency not present when testing)。这是一个帮手:
Ember.Test.registerHelper('containerLookup',
function(app, look) {
return app.__container__.lookup(look);
}
);
你可以像这样轻松地使用它:
test("root lists 3 colors", function(){
var c = containerLookup('controller:foo');
ok(c.get('controllers.bar.tr'));
ok(!c.get('controllers.bar.fa'));
});