Я тестирую Interceptor, для которого требуется одна служба в качестве зависимости. Мне нужно проверить, что метод из этого сервиса был вызван. Приведенный ниже код работает, но поскольку моя зависимость является частной, я должен назвать ее так: service = interceptor['filtersService'];
. Typescript не нравится это и выводит предупреждение:
доступ к объекту через строковые литералы запрещен
Есть ли другой способ шпионить за зависимостью?
describe('CreateClientFilterInterceptor', () => {
const FiltersServiceMock = jest.fn<Partial<FiltersService>, []>(() => ({
async create() {
return (await SubscriberFilterMock) as Filter;
},
}));
let interceptor: CreateClientFilterInterceptor;
let service;
beforeAll(async () => {
interceptor = new CreateClientFilterInterceptor(
new FiltersServiceMock() as FiltersService,
);
service = interceptor['filtersService'];
});
it('should call create method from Filter service', async done => {
spyOn(service, 'create').and.stub();
(await interceptor.intercept(
executionContext as ExecutionContext,
callHandler,
)).subscribe(() => {
expect(service.create).toHaveBeenCalled();
done();
});
});
});
Обходной путь
Я сделал этот обходной путь, чтобы избавиться от предупреждения, но мне оно не кажется правильным.
const serviceName = 'filtersService';
const service = interceptor[serviceName];