シナリオ:実際のサービスmy-service
を使用してテストコンポーネントAを統合する必要があります。私はすべてのコンポーネントにサービスをグローバルに注入しているイニシャライザを持っています: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に追跡しました。それはほぼ実施されたが、その後、グランド・テスト・ユニホームhttps://github.com/emberjs/rfcs/pull/119に賛成して閉鎖された。グランドテストの統一を待っている間、今、解決策はありますか?