如何在NestJs中测试模块

如何在NestJs中测试模块,nestjs,Nestjs,我正在为一个项目添加测试并提高覆盖率。我想知道如何在NestJs中测试模块定义(mymodule.module.ts文件)。 特别是,我正在测试一个导入其他模块的主模块,其中一个模块初始化db连接,这意味着我需要在另一个模块上模拟服务,以避免真正的db连接。 此时此刻,我有这样的想法: beforeEach(async () => { const instance: express.Application = express(); module = await NestF

我正在为一个项目添加测试并提高覆盖率。我想知道如何在NestJs中测试模块定义(mymodule.module.ts文件)。 特别是,我正在测试一个导入其他模块的主模块,其中一个模块初始化db连接,这意味着我需要在另一个模块上模拟服务,以避免真正的db连接。 此时此刻,我有这样的想法:

beforeEach(async () => {
    const instance: express.Application = express();

    module = await NestFactory.create(MyModule, instance);
});
describe('module bootstrap', () => {
    it('should initialize entities successfully', async () => {
        controller = module.get(MyController);
        ...

        expect(controller instanceof MyController).toBeTruthy();
    });
});
这是可行的,但我相信这可以得到改进:)

理想情况是类似于Test.createTestingModule提供的overrideComponent方法


附言:我使用的是4.5.2版本

我们通常不直接测试
.module.ts
文件


我们在
e2e
测试中这样做

但是我想知道为什么要测试模块并且您正在尝试测试模块是否可以初始化其组件,它应该

但是我建议您在
e2e
测试中这样做。
在我看来,在单元测试中,您应该重点测试服务或其他组件的行为,而不是模块。

您现在可以通过这样构建模块来测试您的模块(至少是代码覆盖率):

describe('MyController', () => {
   let myController: MyController;

   beforeEach(async () => {
      const module = await Test.createTestingModule({
         imports: [MyModule],
      }).compile();

      myController= module.get<MyController>(MyController);
   });

   it('should the correct value', () => {
     expect(myController.<...>).toEqual(<...>);
   });
});
description('MyController',()=>{
让myController:myController;
beforeach(异步()=>{
const module=await Test.createTestingModule({
导入:[MyModule],
}).compile();
myController=module.get(myController);
});
它('应该是正确的值',()=>{
expect(myController.).toEqual();
});
});

是的,我正在尝试测试模块是否可以成功初始化其所有依赖项。提高覆盖率将是附带的好处。另一个原因是在代码覆盖率报告上显示覆盖率,如果我们不测试它,它是红色的