Как в Jasmine тестировать вызов функции в функции?

Рейтинг: 0Ответов: 1Опубликовано: 28.07.2023

У меня в Angular проекте есть файл utils.ts, в котором:

export const testFn = function(): void { };

export const testFn1 = function(): void {
  testFn();
};

Мне нужно протестировать функции в node.js (не в браузере)
Я пишу такие тесты:

  describe('Тестирование функции testFn1', () => {

    let moduleObj: any = null;

    beforeEach(() => {
      moduleObj = { testFn, testFn1 };
    });

    it('должна выполниться без ошибок', () => {
      expect(moduleObj.testFn1).not.toThrow();
    });

    it('должна вызывать функцию testFn', () => {
      spyOn<any>(moduleObj, 'testFn');
      moduleObj.testFn1();
      expect(moduleObj.testFn).toHaveBeenCalled();
    });

  });

Но второй тест ломается, Error: Expected spy testFn to have been called
Jasmine не видит вызова функции testFn, что я пишу не так?

Ответы

▲ 0Принят

Если коротко: то никак
Функция testFn1 может быть реализуема с какой-то другой функцией или без неё, а логика может остаться той же. Нужно смотреть на работу самой функции, что она принимает, возвращает, а не что происходит внутри неё, кто там что вызывает.