私は特に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');
});
});
あなたのNavbarItemComponentを表示できますか? –