Как заглушить действие компонента в ember?

#ember.js #ember-data #qunit #ember-qunit #ember-testing

#ember.js #ember-данные #qunit #ember-qunit #ember-тестирование

Вопрос:

Я создал компонент, действие которого использует службу хранения. Как я могу отключить это действие из интеграционного теста?

 // app/components/invoice-form.js
export default Ember.Component.extend({
  actions: {
    loadPartners() {
      let self = this;
      this.get('store').findAll('partner').then(function(partners) {
        self.set('partners', partners);
      });
    }
  }
});
  

В шаблоне этого компонента я передаю это действие как закрытие дочернему компоненту:

 {{button-confirmation text="Are you sure?" onConfirm=(action "loadPartners")}}
  

В моем интеграционном тесте я визуализирую компонент как обычно

 this.render(hbs`{{invoice-form}}`);
  

Действие loadPartners не передается в качестве аргумента помощнику компонента. Это просто действие статического компонента.

Итак, вопрос в том, как заглушить действие loadPartners из интеграционного теста?

Ответ №1:

В интеграционном тесте вы не должны изменять внутреннюю часть компонентов. Вместо этого вам следует изменить реализации зависимостей вашего компонента.

Итак, в этом случае вы должны заглушить store . Смотрите, как заглушить store .

Ссылка из руководства

Комментарии:

1. Как вы вводите store ? Можете ли вы посмотреть определение компонента в twiddle ?

2. На самом деле вы не должны вводить / получать доступ к хранилищу в компоненте. Вы должны обращаться к нему только по маршрутам.

3. ИМО, можно получить доступ к хранилищу в компоненте, но у вас должна быть веская причина для этого.