を入力の上、入力アクションをテストするには、私が持っているEmberJS(2.5.0)次のようなコンポーネント:EmberJS -
{{input type="text" value=searchValue enter='handleSearch'}}
基本的には、「handleSearch」アクションをトリガーする入力フィールドにEnterキーを押します。そして、私のコンポーネントで、これまでのところ私はこれがあります。
searchValue: null,
actions: {
handleSearch() {
var searchValue = this.get('searchValue');
var submitSearch = this.get('submitSearch');
console.log('Search term entered: ', searchValue);
if (submitSearch) {
submitSearch(searchValue);
}
}
}
をし、部品を経由して呼び出されます。すべての罰金と、すべての動作することを
{{my-component submitSearch=(action 'externalAction')}}
が、私はそれをテストし、実際にトラブルを抱えています。
はここに私の統合テスト(擬似コピーthe guideから)です:
test('search input', function(assert) {
this.set('externalAction', (actual) => {
console.log('in external action');
assert.equal(actual, 'hithere');
});
this.render(hbs`{{universal-header-search submitSearch=(action externalAction)}}`);
this.$('input').val('hithere');
this.$('input').change();
});
問題がある、私のhandleSearch
アクションハンドラがトリガされることは決してありません。だから私のinput
フィールドを取得して、統合テストでハンドラを起動させますか?私もthis.$('input').submit()
とthis.$('input').trigger('change')
を試しましたが、どちらも何もしていないようです。
を押したときにのみトリガされ
insert-newline="actionName"
input
のヘルパーを使用することができますこれを動作させるには、[DenHaydashの答え](https://stackoverflow.com/questions/37425984/emberjs-news)で言及されているように、 'keypress'イベントの代わりに' keyup'イベントを使うことで動作させることができました。テスト入力アクション時入力#答え-44393929)。しかし私は 'insert-newline = 'handlSearch''をテンプレートに使っています。 – RustyToms