2016-04-25 6 views
1

Ich versuche Unit-Tests für meine Angular 2-Komponente zu schreiben, bevor ich weiter gehe, aber ich habe keine Ahnung, wie ein Test geschrieben wird, der überprüft, ob meine RouteConfig-Pfad ist auf '/ Dokumente' setzen. Ich möchte auch einen Test haben, der bestätigt, dass meine Vorlage <router-outlet></router-outlet> enthält.So testen Sie meine RouteConfig und andere Decorators in einer Angular 2 Component

Das ist mein Komponente:

import { Component } from 'angular2/core'; 
import { CanActivate, RouteConfig, ROUTER_DIRECTIVES } from angular2/router'; 
import DocumentsComponent from './documents/documents.component'; 

@Component({ 
    template: ` 
     dashboard 
     <router-outlet></router-outlet> 
    `, 
    directives: [ 
     ROUTER_DIRECTIVES, 
    ] 
}) 
@CanActivate((next, prev) => { 
    // check if user has access 
    return true; 
}) 
@RouteConfig([ 
    { 
     path: '/documents', 
     name: 'Documents', 
     component: DocumentsComponent, 
     useAsDefault: true, 
    } 
]) 
export default class DashboardComponent { 
    public name: string = 'John'; 
    sayHello(): string { 
     return `Hello ${this.name}`; 
    } 
} 

Und das ist mein Test (Ich verwende Jasmin):

import DashboardComponent from './../app/dashboard/dashboard.component'; 
import {describe, it, beforeEach, expect} from 'angular2/testing'; 

describe('My DashboardComponent',() => { 

    var dashboard: DashboardComponent = null; 

    beforeEach(function() { 
    dashboard = new DashboardComponent(); 
    }); 

    it('should have its path set to "/documents"', function() { 
     // ??? 
    }); 

    it('should have "<router-outlet></router-outlet>" in its template', function() { 
     // ??? 
    }); 

    it('should have name property', function() { 
    expect(dashboard.name).toBe('John'); 
    }); 

    it('should say hello with name property', function() { 
    expect(dashboard.sayHello()).toBe('Hello John'); 
    }); 

}); 

Antwort

Verwandte Themen