我有一些通常看起来像这样的集成测试:
test('can load with available teams', function () {
visit('/workforce/admin/organizations/create').then(function () {
var controller = App.__container__.lookup('controller:organizations.create');
...
});
});
App .__容器中的下划线表示(至少对我而言),这是一个私有财产,不应在外部访问。
有没有更好的方法/模式来实现这一目标?
答案 0 :(得分:7)
在测试期间,这是最好的方法,您可以创建一个测试帮助程序,以避免在将来发生更改时必须在多个位置修复它。
// register custom helper
Ember.Test.registerHelper('getController',
function(app, controllerName) {
return app.__container__.lookup('controller:' + controllerName);
}
);
test('dblClick link increments count', function() {
expect(2);
visit('/').then(function(){
var c = getController('index');
ok(c.get('good'));
ok(!c.get('bad'));
});
});
答案 1 :(得分:1)
使用@ Kingpin2k的答案时,您也可以利用ES6:
Ember.Test.registerHelper('getController',
(app, controllerName) => app.__container__.lookup('controller:' + controllerName)
);