nestjs 如何在测试中禁用 ScheduleModule(@Cron)

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

这是我在nestjs中的app.module.ts:

import { Module } from '@nestjs/common';
import { CatsModule } from './cats/cats.module';

@Module({
 imports: [CatsModule, ScheduleModule.forRoot()],
})
export class AppModule {}

这是我之前的测试:

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

    app = moduleRef.createNestApplication();
    await app.init();

我希望所有 @Cron() 装饰器在测试中被禁用。 我想完全禁用

ScheduleModule
进行测试。

怎么办呢

(动机是为了避免测试中出现意外的现场影响)

node.js cron nestjs
1个回答
0
投票

我认为问题是你想测试什么?如果您尝试测试实际模块中的代码,您需要创建一个模拟实际 AppModule 配置的测试模块,如下所示:

const moduleRef = await Test.createTestingModule({
      imports: [CatsModule, ScheduleModule],
    }).compile();

describe('your tests', ()=>{

})

我不知道您是否想要测试特定的用例,但通常您并不需要启动应用程序来测试模块,您只需要编译它并运行所描述的测试。这可能就是你有副作用的原因,因为你实际上是在运行应用程序而不是测试它。

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