Как сфокусировать / размыть компонент в интеграционных тестах ember?
Как вызвать события фокуса и размытия при тестировании компонента Ember.js?
this.$().focus();
или же this.$('input').focus();
кажется работает, но ведет себя по-разному в Phantomjs и Chrome.
Также this.$().blur();
или же this.$().focusout();
Кажется, не работают оба фантома и хрома.
2 ответа
Попробуй с trigger
вместо этого это сработало для меня
this.$('input').focusout();
this.$('input').blur();
this.$('input').trigger('focusout');
this.$('input').trigger('blur');
this.$('input').trigger('keyup'); // another event that you can trigger
В более новых версиях Ember есть помощники по тестированию, которые можно использовать для фокусировки или размытия.
...
import { find, focus, blur, render } from '@ember/test-helpers';
module('Integration | Component | example-input', function(hooks) {
test('it can be focused', async function(assert) {
await render(hbs`<myInput />`);
const input = find('input')
await focus(input)
await blur(input)
});
});
размытие: https://github.com/emberjs/ember-test-helpers/blob/master/API.md#blur
фокус: https://github.com/emberjs/ember-test-helpers/blob/master/API.md#focus