for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
import { flushPromises } from '@test/utils/testUtils';
import { InjectLogger } from '@/decorators/InjectLogger';
import { Bean, Logger as PinoLogger } from '@/main';
import Logger from '@/Logger';
jest.mock('@/decorators', () => ({
registeredBeans: new Map(),
registeredMethods: new Map(),
logger: {
info: jest.fn(),
debug: jest.fn(),
error: jest.fn(),
},
}));
jest.mock('@/Logger');
describe('InjectLogger.ts', () => {
beforeEach(() => {
jest.resetAllMocks();
(Logger as jest.Mock).mockImplementation(jest.requireActual('@/Logger').default);
});
it('injects a logger', async () => {
// GIVEN
class Class {
@InjectLogger()
private logger!: PinoLogger;
getLogger() {
return this.logger;
}
// WHEN
const instance = new Class();
await flushPromises();
// THEN
expect(instance.getLogger()).toBeDefined();
it('injects a logger with a scope', async () => {
@Bean
class ClassBean {
@InjectLogger('ClassBean')
const instance = new ClassBean();
instance.getLogger().debug('ciao');
expect(Logger).toBeCalledWith('ClassBean');