55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			55 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();
 | |
| }
 |