Component undefined hat keine Routenkonfiguration, auch bekannt als: Wie konfiguriere ich einen Angular 2-Router für einen Komponententest?

Ich arbeite daran, eine Spezifikation für das Routing mit Angular2 einzurichten. Dies ist die App-Komponente:

import {Component, View} from 'angular2/core';

import {RouteConfig, ROUTER_DIRECTIVES} from 'angular2/router';
import {Search} from './search/search';
import {SearchResults} from './search-results/search-results';

@Component({
     selector: 'my-app'
})
@View({
    template: `<div>
    <router-outlet></router-outlet>
     </div>`,
    directives: [ROUTER_DIRECTIVES]
})
@RouteConfig([
    {path: '/search', name: 'Search', component: Search, useAsDefault: true},
    {path: '/search-results', name: 'SearchResults', component: SearchResults}
])
export class App {
}

Dies ist die Suchkomponente, die die Navigation enthält:

import {Component} from 'angular2/core';
import {Router} from "angular2/router";

@Component({
     template: '<div></div>'
})
export class Search {
    constructor(public router: Router) {}

    onSelect(station:Station):void {
        this.router.navigate(['SearchResults']);
    }
}

Die Suchergebniskomponente: {Component} aus "angular2 / core" importieren;

@Component({
    template: '<div></div>'
})
export class SearchResults {
    constructor() {
    }
}

Dies ist die Spezifikation:

import {
    it,
    inject,
    describe,
    beforeEachProviders,
    MockApplicationRef
} from 'angular2/testing';

import {Component, provide, ApplicationRef} from 'angular2/core';

import {
    APP_BASE_HREF, ROUTER_PRIMARY_COMPONENT, ROUTER_PROVIDERS, ROUTER_DIRECTIVES
} from "angular2/router";
import {Search} from "./search";
import {App} from "../app";
import {SearchResults} from "../search-results/search-results";

import {bootstrap}    from 'angular2/platform/browser';
import {Http, BaseRequestOptions} from "angular2/http";
import {MockBackend} from "angular2/src/http/backends/mock_backend";


describe('Search', () => {

// provide our implementations or mocks to the dependency injector
beforeEachProviders(() => [
    ROUTER_PROVIDERS,
    ROUTER_DIRECTIVES,
    provide(ROUTER_PRIMARY_COMPONENT, {useClass: App}),
    provide(APP_BASE_HREF, {useValue : '/'}),
    provide(ApplicationRef, {useClass: MockApplicationRef}),
    Search
]);

it('navigates', inject([Search], (search) => {
    search.onSelect(CHOICE);
    expect(search.router.navigating).toBe(true);
}));
});

Der Produktionscode funktioniert, die Spezifikation jedoch nicht. Anscheinend fehlt noch etwas im Router-Setup, da ich die folgende Fehlermeldung erhalte: "Komponente undefined hat keine Routenkonfiguration." Ich habe in den Code Angular2 (Beta.1) debuggt und diese Ausnahme wird in Zeile 2407 von router.dev.js ausgegeben. Dies bedeutet, dass dieser Komponente keine Komponentenerkennung zugewiesen ist, aber ich weiß nicht, wie ich sie beheben soll.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage