Я должен написать модульный тест для абстрактного сервиса. У нас есть пара каналов SSE в приложении, и мы создали базовую службу SSE, которая будет расширена, и она обеспечивает некоторые основные функциональные возможности.
export abstract class BaseSseService {
protected zone: NgZone;
protected sseChannelUrl: string;
private eventSource: EventSource;
private reconnectFrequencySec: number = 1;
private reconnectTimeout: any;
constructor(channelUrl: string) {
const injector = AppInjector.getInjector();
this.zone = injector.get(NgZone);
this.sseChannelUrl = channelUrl;
}
protected abstract openSseChannel(): void;
//...
}
Теперь, прежде чем это было сделано, абстрактное модульное тестирование выполнялось. Как только я изменил его на абстрактный класс, я получаю эту ошибку при попытке запустить should be created
test: Error: Can't resolve all parameters for TestBaseSseService: (?).
Мой тест выглядит так:
class TestBaseSseService extends BaseSseService {
openSseChannel() {
console.log('Test');
}
}
fdescribe('BaseSseService', () => {
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
TestBaseSseService,
Injector,
{ provide: String, useValue: "test" }
]
});
AppInjector.setInjector(TestBed.get(Injector));
})
describe(':', () => {
function setup() {
return TestBed.get(TestBaseSseService)
}
it('should be created', () => {
const service = setup();
expect(service).toBeTruthy();
});
});
});
Вопростакое, стоит ли мне вообще заниматься модульным тестом для абстрактного сервиса и если да, то как решить эту проблему? Как видите, насмешка над сервисом не решает эту проблему и не добавляет BaseSseService
к TestBed
провайдерам.