Я пытаюсь реализовать службу регистрации, как подразумевает служба имен. Конкретная реализация службы регистрации будет решена во время инициализации. Эта конкретная реализация использует консоль для регистрации сообщений. Мне нужно Console
в конструкторе, чтобы можно было его смоделировать, не затрагивая глобальный console
объект.
У меня был такой же тестовый запуск на Jasmine, и он прошел бы отлично. Также он прекрасно работает в приложении, поэтому я думаю, что это как-то связано с Jest или его конфигурацией.
Я пытаюсь внедрить интерфейс консоли в мою службу Angular, например:
export class ConsoleLoggerService implements LoggerService {
constructor(public console: Console) { }
}
Когда я пытаюсь запустить свой тест:
describe('ConsoleLoggerService', () => {
let service: ConsoleLoggerService;
let consoleMock: Console;
beforeEach(async(() => {
consoleMock = {
log(message?: any, ...optionalParams: any[]) { }
} as Console;
service = new ConsoleLoggerService(consoleMock);
}));
it('should be created', () => {
expect(service).toBeTruthy();
});
});
я получаю эту ошибку
● Test suite failed to run
ReferenceError: Console is not defined
9 | export class ConsoleLoggerService implements LoggerService {
10 |
> 11 | constructor(public console: Console) { }
| ^
В моем понимании интерфейс Console
происходит от @types/node
и должен быть доступны по всему миру. Почему мой тест проваливается?
Я использую Angular 9, Jest 24.9 и Nx 9 для своей рабочей области.