53 lines
1.4 KiB
TypeScript
53 lines
1.4 KiB
TypeScript
// Simulate a simple test
|
|
// Reader should look to the testing chapter for the real thing
|
|
|
|
import {Component} from '@angular/core';
|
|
import { HeroService } from './heroes/hero.service';
|
|
import { HeroListComponent } from './heroes/hero-list.component';
|
|
|
|
@Component({
|
|
selector: 'my-tests',
|
|
template: `
|
|
<h2>Tests</h2>
|
|
<p id="tests">Tests {{results.pass}}: {{results.message}}</p>
|
|
`
|
|
})
|
|
export class TestComponent {
|
|
results = runTests();
|
|
}
|
|
|
|
/////////////////////////////////////
|
|
function runTests() {
|
|
|
|
//#docregion spec
|
|
let expectedHeroes = [{name: 'A'}, {name: 'B'}]
|
|
let mockService = <HeroService> {getHeroes: () => expectedHeroes }
|
|
|
|
it("should have heroes when HeroListComponent created", () => {
|
|
let hlc = new HeroListComponent(mockService);
|
|
expect(hlc.heroes.length).toEqual(expectedHeroes.length);
|
|
})
|
|
//#enddocregion spec
|
|
|
|
return testResults;
|
|
}
|
|
|
|
//////////////////////////////////
|
|
// Fake Jasmine infrastructure
|
|
var testName:string;
|
|
var testResults: {pass:string; message:string};
|
|
|
|
function expect(actual:any) {
|
|
return {
|
|
toEqual: function(expected:any){
|
|
testResults = actual === expected?
|
|
{pass:'passed', message: `${testName}`} :
|
|
{pass:'failed', message: `${testName}; expected ${actual} to equal ${expected}.`};
|
|
}
|
|
}
|
|
}
|
|
|
|
function it(label:string, test: () => void) {
|
|
testName = label;
|
|
test();
|
|
} |