Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

To simulate the NestJS internal Logger using Jest, you can use the jest.spyOn() method to create a spy on the LoggerService class.

Here is an example of how you can test a method that uses the NestJS internal Logger:

import { Test, TestingModule } from '@nestjs/testing';
import { MyService } from './my.service';
import { LoggerService } from '@nestjs/common';

describe('MyService', () => {
  let service: MyService;
  let loggerSpy: jest.SpyInstance;

  beforeEach(async () => {
    const module: TestingModule = await Test.createTestingModule({
      providers: [
        MyService,
        {
          provide: LoggerService,
          useValue: {
            debug: jest.fn(),
            error: jest.fn(),
            log: jest.fn(),
            verbose: jest.fn(),
            warn: jest.fn(),
          },
        },
      ],
    }).compile();

    service = module.get(MyService);
    loggerSpy = jest.spyOn(service.logger, 'log');
  });

  afterEach(() => {
    loggerSpy.mockClear();
  });

  it('should call the log method of the logger', () => {
    service.myMethod();

    expect(loggerSpy).toHaveBeenCalledWith('My message');
  });
});

In this example, we create a spy on the log method of the LoggerService, and use it to verify that the method myMethod calls the logger with the expected message. We also clear the spy after each test to make sure it doesn't interfere with the next test.