JEST 的 Nestjs 日志服务

Wir*_*nan 0 logging jestjs nestjs

在 Jest 中执行时,我在查看 Nestjs 内的日志时遇到问题。我可以设置在运行 Nestjs 时查看记录器,但通过 Jest 运行时。记录器未打印在屏幕上。

以下是用于设置测试模块的代码。

const module: TestingModule = await Test.createTestingModule({
  imports: [HttpModule, ScheduleModule.forRoot()],
  controllers: [ExampleController],
  providers: [ExampleService, Logger],
}).compile();

module.useLogger(['error', 'warn', 'log', 'debug', 'verbose']);
Run Code Online (Sandbox Code Playgroud)

在ExampleController中

import { Controller, Get, Logger } from '@nestjs/common';

@Controller('example')
export class ExampleController {
  private readonly logger = new Logger(ExampleController.name);

  @Get()
  getExample(): string {
    this.logger.debug('example');
    return 'example';
  }
}
Run Code Online (Sandbox Code Playgroud)

在 Jest 上运行时不会显示此调试消息。

Agu*_*ira 6

迟到的回答,但我刚刚遇到了同样的问题,并最终通过添加解决了它:

module.useLogger(new ConsoleLogger());
Run Code Online (Sandbox Code Playgroud)

希望它能帮助某人。ConsoleLogger是从进口的@nestjs/common

  • 感谢 Agus,它也可以在编译之前链接。例如: `Test.createTestingModule({...}).setLogger(new ConsoleLogger()).compile()` (3认同)