我在测试一个组件时遇到了类似的问题,并在 Ember 测试中发现了一些让我成功测试该组件的见解。
Ember 的测试TextField
展示了如何编译包含引用助手的把手模板的一次性视图。这使用本地创建的控制器/视图,用于隔离要测试的助手。
这几乎直接用于组件测试,除了我无法获取车把模板来解析自定义组件车把助手名称。我在产量测试中找到了一种在测试模板把手中使用组件的方法。关键是在控制器中引用组件,然后使用{{view myComponentNameOnTheController ... }}
.
我修改了 Toran 的 JSBin 以显示这一点:http: //jsbin.com/UNivugu/30/edit
var App = Ember.Application.create();
App.MyThingComponent = Ember.Component.extend({
template: Ember.Handlebars.compile('<button {{action "doSomething"}}>{{view.theText}}</button>'),
actions: {
doSomething: function(){
console.log('here');
this.set('didSomething', true);
}
}
});
/////////////////////////////
// start of your test file
var controller, wrapperView;
var compile = Ember.Handlebars.compile;
module('MyThingComponent', {
setup: function(){
controller = Ember.Controller.extend({
boundVar: "testing",
myComponent: App.MyThingComponent
}).create();
wrapperView = Ember.View.extend({
controller: controller,
template: compile("{{view myComponent theText=boundVar}}")
}).create();
Ember.run(function(){
wrapperView.appendTo("#qunit-fixture");
});
},
teardown: function(){
Ember.run(function(){
wrapperView.destroy();
});
}
});
test('bound property is used by component', function(){
equal(wrapperView.$('button').text(), "testing", "bound property from controller should be usedin component");
});