NestJS Global Modules正在测试中

问题描述 投票:1回答:1

有没有办法自动提供所有@Globalmodules到TestModule? (即无需导入它们,与主应用程序的工作方式相同)

到目前为止,我必须确保将任何全局模块插入到我的调用的import列表中:

await Test.createTestingModule({
      imports: [
        GlobalModule1,
        GlobalModule2
javascript node.js typescript nestjs
1个回答
2
投票

全局模块始终必须导入一次才能使其提供商在全球范围内可用。这适用于测试和主要应用程序,请参阅docs

全局模块只能注册一次,最好是根模块或核心模块。之后,CatsService提供商将无处不在,虽然CatsModule将不会被导入。

所以没有办法导入它们。您可以通过创建导入所有全局模块的CommonsModule来简化操作。然后,您可以导入CommonsModule而不是AppModule中的每个模块和测试。

但请注意,具有大量全局依赖性的是代码气味。此外,在单元测试中,您通常希望独立于任何其他依赖项测试类。如果导入全局模块,则将针对实际提供程序进行测试。

让一切变得全球化并不是一个好的决定。全局模块可用于减少必要的样板量。导入数组仍然是使模块API透明的最佳方法。

© www.soinside.com 2019 - 2024. All rights reserved.