场景:我想使用真实的服务集成测试组件my-service
A。我有一个初始化程序,它将服务全局注入所有组件:application.inject('component', 'myService', 'service:my-service');
. 组件 A 在其模板中使用组件 B,并且它们都myService
在其模板中使用。
如何重新创建全局注入?没有完整的应用程序,所以我无法导入和运行真正的初始化程序,因为我没有所需的参数。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。在我们等待大测试统一的同时,现在有什么解决方案吗?