Как в unit тестах jasmine вызвать метод mock сервиса?

В Angular для написания unit-тестов используется фреймворк Jasmine. Для мокирования сервисов во время тестирования в Jasmine можно использовать функции spyOn и createSpyObj.

Если вы хотите вызвать метод mock сервиса, вам следует сначала создать мок сервиса с помощью createSpyObj. Эта функция создаст объект, у которого будут созданы заглушки (spy) для каждого метода сервиса.

Например, пусть у вас есть сервис SomeService c методом someMethod, который вы хотите протестировать в другом компоненте. Вы можете создать мок сервиса следующим образом:

import { SomeService } from 'путь/к/сервису';

...

const someServiceMock = jasmine.createSpyObj('SomeService', ['someMethod']);

Затем, чтобы вызвать метод someMethod mock сервиса во время теста, вы можете использовать функцию spyOn. В этом случае, вы передадите ссылку на объект mock сервиса и имя метода, который хотите вызвать:

spyOn(someServiceMock, 'someMethod').and.callThrough();

and.callThrough() гарантирует, что при вызове метода someMethod будет вызван оригинальный метод, а не заглушка.

Теперь вы можете вызывать метод someMethod mock сервиса во время теста и проверять ожидаемые результаты:

it('should call someMethod in SomeService', () => {
  component.someMethodThatUsesSomeService();

  expect(someServiceMock.someMethod).toHaveBeenCalled();
});

Таким образом, вы можете вызывать методы mock сервиса в тестах Jasmine с помощью spyOn и createSpyObj.