在Ember-CLI 1.13.1中,我在我的组件中进行了以下集成测试:
import { moduleForComponent, test } from 'ember-qunit';
import hbs from 'htmlbars-inline-precompile';
moduleForComponent('category-tabs', 'Integration | Component | category tabs', {
integration: true
});
test('tapping button fires an external action', function(assert) {
this.on('onTabTouch', function(value) {
assert.equal(value, 'Expense');
});
this.render(hbs`
{{category-tabs onTabTouch=(action "onTabTouch")}}
`);
this.$('button:first').click();
});
Run Code Online (Sandbox Code Playgroud)
然后在我的组件中,我有这个动作:
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
handleTabTouch(tab) {
this.attrs.onTabTouch(tab);
}
}
});
Run Code Online (Sandbox Code Playgroud)
我的测试继续这样说:
在[object Object]中找不到名为'onTabTouch'的动作.
如何测试闭包动作?我也尝试过:
this.set('onTabTouch', function(value) {
assert.equal(value, 'Expense');
});
Run Code Online (Sandbox Code Playgroud)
它没有用.