Ember.js组件集成测试:如何使用全局注入和嵌套组件?

场景:我想使用真实的服务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而关闭了。在等待大测试统一的同时,现在有什么解决方案吗?

转载请注明出处:http://www.chufzs.com/article/20230526/1155789.html