У меня была аналогичная проблема с тестированием компонента и была найдена пара идей в тестах Ember, которые позволили мне успешно протестировать компонент.
tests for Ember's TextField
показал, как скомпилировать одноразовое представление, которое включает в себя шаблон руля, который ссылается на помощника. Это использует локально созданный контроллер/представление, которое используется для изоляции хелпера для тестирования.
Этот почти работал непосредственно для тестирования компонентов, за исключением того, что я не смог получить шаблон handlebars для разрешения имени вспомогательного элемента handbars компонента. Я нашел метод использования компонентов в дескрипторах шаблона тестового шаблона в тестах на выход. Ключ должен ссылаться на компонент в контроллере, а затем вставлять компонент с помощью {{view myComponentNameOnTheController ... }}
.
Я изменил JSBin Toran, чтобы показать это в действии: 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");
});
Получаете ли вы некоторую ошибку в этом тесте, или 'result' просто возвращают undefined? –
Результат не определен, когда я использую «свойство», и он возвращает функциональный текст, когда я использую «наблюдает» – encore
Вот быстрый jsbin, показывающий тестирование компонентов http://jsbin.com/UNivugu/2/edit –