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.
Asked: 2021-07-25 11:00:00 +0000
Seen: 10 times
Last updated: Jun 07 '21