1

我无法在 ember 验收测试中触发“更改”事件。

我有一个带有观察到的“价值”属性的范围滑块。在更改时,滑块会发送一个 api 请求,该请求会根据滑块值使用参数更新 url。

我可以使用 jQuery 在我的测试中更改滑块的值,它成功地更新了 UI 中的滑块...

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

...但是没有触发更改事件,因此没有 api 调用。对于类似的测试,相同的设置可以正常工作,我可以使用“click”或“fillIn”来触发请求。

我试过同时使用运行循环和 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()?有没有更好的方法来处理这个?

4

1 回答 1

0

通过单击滑块手柄,我能够触发更改事件。

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

我仍然不知道我在 triggerEvent() 帮助器上做错了什么,但也许这会在未来帮助一些可怜的灵魂。

于 2016-01-05T19:30:36.180 回答