I am Jasmine unit testing an angular component, which uses Observables. My component has this lifecycle hook that I am testing: ngOnInit() { this.dataService.getCellOEE(this.cell).subscribe(value => this.updateChart(value)); } I have a test that ensures that getCellOEE has been called, but now I want to check that updateChart is called when the observable resolves with a new value. This is what I have so far: let fakeCellService = { getCellOEE: function (value): Observable<Array<IOee>> { return Observable.of([{ time: moment(), val: 67 }, { time: moment(), val: 78 }]); } }; describe('Oee24Component', () => { let component: Oee24Component; let service: CellService; let injector: Injector; let fixture: ComponentFixture<Oee24Component>; beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [Oee24Component], providers: [{ provide: CellService, useValue: fakeCellService }] }) .compileComponents(); })); beforeEach(() => { fixture = TestBed.createComponent(Oee24Component); component = fixture.componentInstance; injector = getTestBed(); service = injector.get(CellService) fixture.detectChanges(); spyOn(service, 'getCellOEE').and.returnValue({ subscribe: () => { } }); spyOn(component, 'updateChart'); }); it('should get cell oee on init', () => { component.ngOnInit(); expect(service.getCellOEE).toHaveBeenCalled(); }); it('should update chart on new data', () => { component.ngOnInit(); expect(component.updateChart).toHaveBeenCalled(); }); }); However, I get the error: chrome 56.0.2924 (Windows 10 0.0.0) Oee24Component should update chart on new data FAILED Expected spy updateChart to have been called. Presumably this is a timing issue because the observable hasn't necessarily resolved when the test checks? If that is the case, how do I set this up correctly? Update: Here is my component: @Component({ selector: 'app-oee24', templateUrl: './oee24.component.html', styleUrls: ['./oee24.component.css'] }) export class Oee24Component implements OnInit { public barChartData: any[] = [{ data: [], label: 'OEE' }]; constructor(public dataService: CellService) { } ngOnInit() { this.dataService.getCellOEE(this.cell).subscribe(value => this.updateChart(value)); } updateChart(data: Array<IOee>) { this.barChartData[0].data = data.map(val => val.val); } } Continue reading...