Как сфокусировать / размыть компонент в интеграционных тестах 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

Другие вопросы по тегам