Итак, я пытаюсь протестировать вызовы, которые компонент x совершает к своему внедренному сервису, сам сервис имеет несколько методов и получатели / установщики rxjs BehaviourSubject.
В настоящее время тестирование одного геттера происходит следующим образом.
let component: EditFeatureComponent;
let fixture: ComponentFixture<EditFeatureComponent>;
let vectorLayerSubject = new BehaviorSubject<any>({});
let mockAnnoService = { getLayerToEdit: vectorLayerSubject.asObservable() };
let mockFeatureService = jasmine.createSpyObj(['getFeatureToEdit', 'setFeatureToEdit']);
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [EditFeatureComponent, CoreMapComponent, MapsComponent],
imports: [FormsModule, HttpClientModule],
providers: [
{ provide: AnnotationService, useValue: mockAnnoService},
{ provide: FeatureStyleService, useValue: mockFeatureService}
],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
.compileComponents();
}));
beforeEach(() => {
// Fields required for the component
layer = {
layerName: 'testLayer',
ol_uid: 1
}
// Create the testbed
fixture = TestBed.createComponent(EditFeatureComponent);
component = fixture.componentInstance;
});
it('Should return a layer object and have a ol_uid of 1', fakeAsync(()=>{
vectorLayerSubject.next(layer);
component.ngOnInit();
expect(component.layer).toBe(layer);
}))
И это прекрасно работает, проходит и покрывает покрытие кода, но как мне протестировать другие вызовы геттера для службы и методов, какУ меня не может быть более одного mockValue, назначенного службе.
Обычно я просто создаю spyObj для методов, но я не могу назначить больше, чем useValue для службы или сохранить все получатели /методы в одной переменной.
Следует также отметить, что службы являются частными и доступны только для компонента.