#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. ИМО, можно получить доступ к хранилищу в компоненте, но у вас должна быть веская причина для этого.