Сценарий: Я хочу интегрировать тестовый компонент A, используя реальный сервис my-service
. У меня есть инициализатор, который глобально вводит службу во все компоненты: application.inject('component', 'myService', 'service:my-service');
. Компонент A использует компонент B в своем шаблоне, и оба они используют myService
в своих шаблонах.Тест интеграции компонентов Ember.js: как работать с глобальными инъекциями и вложенными компонентами?
Как воссоздать глобальную инъекцию? Нет полного приложения, поэтому я не могу импортировать и запускать настоящий инициализатор, потому что у меня нет необходимого параметра. this.inject.service
не работает, потому что он вводит его в тестовый контекст, а не в глобальный контекст приложения.
Я мог бы изменить шаблоны всех моих компоненты в цепи на службе весь путь вниз: {{b-component myService=myService}}
, а затем
this.render(hbs`{{a-component myService=myService}}`);
Но это в крайнем случае. Я мог бы также избавиться от глобальной инъекции и вводить вручную в каждый компонент. Это также последнее средство.
Я отслеживал разговоры об этой проблеме с https://github.com/emberjs/ember.js/issues/12277. Он был практически реализован, но затем закрыт в пользу Grand Testing Unification https://github.com/emberjs/rfcs/pull/119. Есть ли какие-то решения, пока мы ждем грандиозного тестирования?