3

我是新手nestjs,遇到了关于如何覆盖的load功能的问题ConfigModule,希望有人能帮助我,在此先感谢!

我的 e2e 测试:

const moduleForTesting = await Test.createTestingModule({imports: [AppModule]});

我的应用模块:

import config from './config/index'

@Module({
  imports: [ConfigModule.forRoot({isGlobal: true, load: [config]})]
})

我的config/index文件:

export default async () => {
  someConfigs: ...
}

现在我希望 e2e 测试使用其他配置,但我不知道如何覆盖 AppModule,也不知道load函数:

// AppModule
import config from './config/index' // This is ok for production, but need to be overridden in testing

...
  imports: [ConfigModule.forRoot({isGlobal: true, load: [config]})]
4

2 回答 2

0

请参阅@jbiskur/nestjs-test-utilities中的withModule方法TestModuleBuilder

NestJS 功能请求:https ://github.com/nestjs/nest/issues/4905

于 2021-12-12T22:38:20.710 回答
0

我不知道什么是优雅的 NestJs 方式来做到这一点,但在深呼吸之后,我重新考虑了我真正想做的事情,然后找到了一种 hackie 方式来实现这一点。

我需要模拟config文件,以便在测试期间,load数组将被模拟jest.mock,救援:

// e2e testing file

jest.mock('../src/config/index', () => ({
    default: async () => ({
        someConfigs: 'mocked config'
    })
})) // <--- By putting the `jest.mock` before the `createTestingModule`, the `load` array will be mocked.

...
const moduleForTesting = await Test.createTestingModule({imports: [AppModule]});

于 2021-04-22T04:15:55.810 回答