Ember — помощник по triggerEvent

У меня возникли проблемы с запуском события «изменение» в приемочном тесте Ember.

У меня есть ползунок диапазона с наблюдаемым свойством «значение». При изменении ползунок отправляет запрос API, который обновляет URL-адрес с параметрами на основе значения ползунка.

Я могу изменить значение ползунка в своем тесте с помощью jQuery, который успешно обновляет ползунок в пользовательском интерфейсе...

$("#slider").val(3.0).change();

... но событие изменения не запускается, поэтому нет вызова API. Эта же настройка отлично работает для аналогичных тестов, где я могу использовать «щелчок» или «заполнение» для запуска запроса.

Я пробовал использовать как цикл выполнения, так и вспомогательную функцию triggerEvent (см. ниже), но мне не повезло.

    // 1. using the run loop -- updates UI, but no change event fired

    Ember.run(function() {
      $("#gpa-slider").val(3.0).change();
    });
    andThen(() => {
      assert.equal(currentURL(), "/athletes?gpa=3.0")
    });


    //2. using triggerEvent helper -- 
    //   doesn't update UI, slider value, or trigger change event

    triggerEvent('#gpa-slider', 'change', {value: 3.8} )

    andThen(() => {
      assert.equal(currentURL(), "/athletes?gpa=3.0")
    });

Я неправильно настроил triggerEvent()? Есть ли лучший способ справиться с этим?


person Jim    schedule 30.12.2015    source источник


Ответы (1)


Я смог запустить событие изменения, щелкнув ручку ползунка.

click(Ember.$('.rangeslider__handle'));
andThen(() => {
  assert.equal(currentURL(), '/athletes?gpa=3.0');
});

Я до сих пор не знаю, что я делал не так с помощником triggerEvent(), но, возможно, это поможет кому-нибудь в будущем.

person Jim    schedule 05.01.2016