import { ComponentFixture, TestBed, inject } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { DebugElement } from '@angular/core'; import { Observable } from 'rxjs/Observable'; import { HelpComponent } from './help.component'; import { HeaderDataService } from '../services/header-data.service'; import { Http, Response } from '@angular/http'; describe('Help Component', () => { let fixture, helpComponent, headerDataService, el, de, de2; // setup beforeEach(() => { // not currently using this class // left in for now so the real FooterService isn't called class MockHeaderDataService { data = { "languages": [ { "language": "English" }, { "language": "Frances" }, { "language": "EspaƱol" } ], "helpLink": { "helpUrl": "http://www.google.com", "helpText": "Help" }, "Profile": { "firstName": "Tony", "lastName": "Stark", "caasID": "12863426103476" } } loadData() { return this.data; } } TestBed.configureTestingModule({ declarations: [ HelpComponent ], providers: [{ provide: HeaderDataService, useValue: MockHeaderDataService }] }) .overrideComponent(HelpComponent, { set: { providers: [ { provide: HeaderDataService, useClass: MockHeaderDataService } ] } }) }); beforeEach(() => { fixture = TestBed.createComponent(HelpComponent); headerDataService = fixture.debugElement.injector.get(HeaderDataService); helpComponent = fixture.componentInstance; // to access properties and methods de = fixture.debugElement.query(By.css('.help-link')); el = de.nativeElement; // override default getLinks to remove observe/subscribe & http request helpComponent.getHelpLink = function() { helpComponent.helpData = { 'helpUrl': 'http://www.google.com', 'helpText': 'Help' }; }; }); // specs // TODO: refactor test to check for content more comprehensively it('should give the link text', () => { helpComponent.getHelpLink(); fixture.detectChanges(); expect(el.textContent).toContain('e'); }); });