У меня есть компонент, который подписывается на наблюдаемое, возвращаемое из службы в ngOnInit. У меня также есть метод (updateData), который подписывается на наблюдаемое из службы, но также обновляет некоторые свойства внутри подписки. Мне нужно создать тест, чтобы проверить, изменяется ли это свойство на правильное значение при вызове updateData.
Фрагмент компонента:
ngOnInit() {
this.myService.loadData().subscribe() => {
// some code here
});
}
...
public updateData() {
this.myService.updateData(this.data).subscribe(() => {
this.dataUpdated = true;
});
}
Испытательная установка
describe('MyComponent', () => {
let component: MyComponent;
let fixture: ComponentFixture<MyComponent>;
let myServiceSpy: jasmine.SpyObj<MyService>;
const dataMock = {};
const updateResponseMock = {};
beforeEach(async(() => {
myServiceSpy = jasmine.createSpyObj('DesignPickerService', [
'loadData',
'updateData'
]);
myServiceSpy.loadData.and.returnValue(
cold('-a|', { a: dataMock })
);
myServiceSpy.updateData.and.returnValue(
cold('--b|', { b: updateResponseMock })
);
TestBed.configureTestingModule({
declarations: [
MyComponent,
],
providers: [
{
provide: MyService,
useFactory: () => {
return myServiceSpy;
}
}
]
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(MyComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
describe('Tests', () => {
it('updateData should set dataUpdated to true', () => {
??? // some code to wait for myService.loadData to finish
component.dataUpdated = false;
component.updateData();
??? // some code to wait for myService.updateData to finish
expect(component.dataUpdated).toBe(true);
})
});
});
Я хочу добавить эти недостающие строки, чтобы тест прошел. Любая помощь будет оценена по достоинству.