2016-04-25 10 views
1

私はAngular 2コンポーネントの単体テストを記述しようとしていますが、それ以上は行っていませんが、RouteConfigのパスが'/ documents'に設定します。テンプレートに<router-outlet></router-outlet>が含まれていることを確認するテストもしたいと思います。RouteConfigと他のデコレータをAngular 2コンポーネントでテストする方法

これは私のコンポーネントです:

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}`; 
    } 
} 

そして、これが私のテスト(私はジャスミンを使用しています)です:あなたがいずれかを発見していない場合は

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'); 
    }); 

}); 

答えて

関連する問題