在我的Ember应用程序中,我有一个简单的表单组件,具有以下行为(片段):
...
let searchText = this.get('searchText') &&
this.get('searchText').trim().toLowerCase();
this.sendAction('searchTextChanged', searchText);
...
我如何单元在qunit测试中测试此功能?我无法弄清楚如何听取操作结果。我使用ember-cli附带的测试功能 - qunit,助手等。
答案 0 :(得分:3)
Ember有关于如何做到这一点here的指南。我将这里的代码放在这里,以防指南发生变化。
鉴于此组件:
App.MyFooComponent = Ember.Component.extend({
layout:Ember.Handlebars.compile("<button {{action 'doSomething'}}></button>"),
actions: {
doSomething: function() {
this.sendAction('internalAction');
}
}
});
你会测试这样的动作:
moduleForComponent('my-foo', 'MyFooComponent');
test('trigger external action when button is clicked', function() {
// tell our test to expect 1 assertion
expect(1);
// component instance
var component = this.subject();
// component dom instance
var $component = this.append();
var targetObject = {
externalAction: function() {
// we have the assertion here which will be
// called when the action is triggered
ok(true, 'external Action was called!');
}
};
// setup a fake external action to be called when
// button is clicked
component.set('internalAction', 'externalAction');
// set the targetObject to our dummy object (this
// is where sendAction will send its action to)
component.set('targetObject', targetObject);
// click the button
click('button');
});