我们有一个方法装饰器,该方法装饰器应用于一个控制器中的路由。该装饰器采用在配置文件中设置的布尔值,并且该值会随每个环境而变化。
我们想通过动态更改配置值来在e2e测试中测试此装饰器,我们已经设法做到了。我们使用config
npm软件包而不是@nestjs/config
软件包。
但是,即使在进行这些更改之后导入控制器,也要在应用更改之前加载控制器文件。
问题是我们如何重新加载或重新编译控制器以考虑修改后的值,以便装饰器更改其行为。
这是我们创建模块的方式,我们可以从该模块中剥离NestJs应用程序
const moduleRef = await Test.createTestingModule({
imports: [AuthModule],
controllers: [AuthNestController],
})
.overrideProvider(IAuthProvider)
.useClass(TestAuthProvider)
.compile();
也欢迎采用在更改后强制加载控制器代码的解决方案。