2016-10-06 4 views
0

私は特にAngular2の初心者です。私はWebで解決策を探しましたが、もはや動作しない古いコード例がたくさんあります。そこで私はあなたに尋ねに来ました。未定義はオブジェクトではありません( 'config.forEach'を評価する) - Angular2 Route Test

「カルマテスト」でテストを実行したとき。私はhttps://angular.io/docs/ts/latest/guide/testing.html#!#router-outlet-component

// export for convenience. 
export { ActivatedRoute, Router, RouterLink, RouterOutlet} from '@angular/router'; 

import { Component, Directive, Injectable, Input } from '@angular/core'; 
import { NavigationExtras } from '@angular/router'; 

@Directive({ 
    selector: '[routerLink]', 
    host: { 
    '(click)': 'onClick()' 
    } 
}) 
export class RouterLinkStubDirective { 
    @Input('routerLink') linkParams: any; 
    navigatedTo: any = null; 

    onClick() { 
    this.navigatedTo = this.linkParams; 
    } 
} 

@Component({selector: 'router-outlet', template: ''}) 
export class RouterOutletStubComponent { } 

@Injectable() 
export class RouterStub { 
    navigate(commands: any[], extras?: NavigationExtras) { } 
} 


// Only implements params and part of snapshot.params 
import { BehaviorSubject } from 'rxjs/BehaviorSubject'; 

@Injectable() 
export class ActivatedRouteStub { 

    // ActivatedRoute.params is Observable 
    private subject = new BehaviorSubject(this.testParams); 
    params = this.subject.asObservable(); 

    // Test parameters 
    private _testParams: {}; 
    get testParams() { return this._testParams; } 
    set testParams(params: {}) { 
    this._testParams = params; 
    this.subject.next(params); 
    } 

    // ActivatedRoute.snapshot.params 
    get snapshot() { 
    return { params: this.testParams }; 
    } 
} 


/* 
Copyright 2016 Google Inc. All Rights Reserved. 
Use of this source code is governed by an MIT-style license that 
can be found in the LICENSE file at http://angular.io/license 
*/ 

から更新app.componentをルータstubs.tsファイルを使用

Error: Error in ./NavbarItemComponent class NavbarItemComponent - inline template:1:1 caused by: undefined is not an object (evaluating 'config.forEach') in config/karma/karma-test-shim.js (line 20623)

app.component.spec.ts

import { TestBed } from '@angular/core/testing'; 
import { AppComponent } from './app.component'; 
import { NavbarVerticalComponent } from './navbar-vertical/navbar-vertical.component'; 
import { NavbarItemComponent } from './navbar-item/navbar-item.component'; 
import { Router } from '@angular/router' 
import { RouterTestingModule } from '@angular/router/testing'; 

class MockRouter extends Router { 
    navigate = jasmine.createSpy('navigate'); 
    routerState: RouterState; 
} 

describe('App',() => { 
    beforeEach(() => { 
    TestBed.configureTestingModule({ 
    declarations: [AppComponent, NavbarVerticalComponent, NavbarItemComponent ], 
    providers: [ 
     { provide: Router, useClass: MockRouter } 
    ], 
    imports: [RouterTestingModule] 
    }); 
    }); 

    it ('should work',() => { 
    let fixture = TestBed.createComponent(AppComponent); 
    expect(fixture.componentInstance instanceof AppComponent).toBe(true, 'should create AppComponent'); 
    }); 

}); 
+0

あなたのNavbarItemComponentを表示できますか? –

答えて

1

:私は次のエラーを取得します.spec.ts

import { TestBed } from '@angular/core/testing'; 
import { AppComponent } from './app.component'; 
import { NavbarVerticalComponent } from './navbar-vertical/navbar-vertical.component'; 
import { NavbarItemComponent } from './navbar-item/navbar-item.component'; 
import { Router } from '@angular/router' 
import { RouterOutletStubComponent, RouterLinkStubDirective } from './testing/router-stubs'; 

describe('App',() => { 
    beforeEach(() => { 
    TestBed.configureTestingModule({ 
     declarations: [AppComponent, 
        NavbarVerticalComponent, 
        NavbarItemComponent, 
        RouterLinkStubDirective, 
        RouterOutletStubComponent] 
    }); 
    }); 

    it ('should work',() => { 
    let fixture = TestBed.createComponent(AppComponent); 
    expect(fixture.componentInstance instanceof AppComponent).toBe(true, 'should create AppComponent'); 
    }); 

}); 

It w今、orks。

+0

私は遅くなっていますが、このファイルがどこにあるか知りたいのですが、あなたが与えたリンクでは届かないようです。 – trichetriche

+0

あなたは素晴らしいです! –

関連する問題