有没有办法自动提供所有@Global
modules到TestModule
? (即无需导入它们,与主应用程序的工作方式相同)
到目前为止,我必须确保将任何全局模块插入到我的调用的import
列表中:
await Test.createTestingModule({
imports: [
GlobalModule1,
GlobalModule2
全局模块始终必须导入一次才能使其提供商在全球范围内可用。这适用于测试和主要应用程序,请参阅docs。
全局模块只能注册一次,最好是根模块或核心模块。之后,
CatsService
提供商将无处不在,虽然CatsModule
将不会被导入。
所以没有办法导入它们。您可以通过创建导入所有全局模块的CommonsModule
来简化操作。然后,您可以导入CommonsModule
而不是AppModule
中的每个模块和测试。
但请注意,具有大量全局依赖性的是代码气味。此外,在单元测试中,您通常希望独立于任何其他依赖项测试类。如果导入全局模块,则将针对实际提供程序进行测试。
让一切变得全球化并不是一个好的决定。全局模块可用于减少必要的样板量。导入数组仍然是使模块API透明的最佳方法。