0

Angular2 アプリを Release Candidate 4 にアップグレードしましたが、それ以来、新しいリリース候補バージョンで項目が導入または減価されたため、一部のテストを再設計する必要がありました。ただし、大量のテストが失敗するようになりました。理由はわかりませんが、次のエラーに悩まされており、理由はわかりません。これはテストの 50% で発生する必要があります。

[2]     Error: EXCEPTION: Error during instantiation of Router! (BreadcrumbComponent -> Router).
[2]     ORIGINAL EXCEPTION: TypeError: platformStrategy.getBaseHref is not a function

したがって、何かが間違っているか、「@ngrx/router」: 「^1.0.0-beta.1」に問題があると思いますが、間違っている可能性があります。したがって、私のテストは次のようになります...(私が何をしているのかを理解するために、これを減らしてみました)。

@Component({
    selector: 'my-test',
    template: '<my-breadcrumb></my-breadcrumb>',
    directives: [NavigationComponent]
})
class NavigationComponentSelectorTestComponent {}

@Component({
    selector: 'my-dummy',
    template: 'dummy'
})
class DummyComponent {}

const routes: DisplayRoutes = [
    {
        path: '/',
        display: 'Home',
        component: DummyComponent
    }, {
        path: '/path1',
        display: 'Path1',
        component: DummyComponent
    }, {
        path: '/path2',
        display: 'Path2',
        component: DummyComponent,
        index: {
            component: DummyComponent
        },
        children: [
            {
                path: '/:id',
                component: DummyComponent
            }
        ]
    }
];

class MockContentService {
    public getContentMock: SinonStub = stub();
    getContent(key: string):Observable<Card[]> {
        return this.getContentMock(key);
    }
}

// actual tests...
describe('Component: NavigationComponent', () => {

    beforeEach(() => addProviders([
        provideRouter(routes, SpyLocation),
        NavigationComponent,
        {provide: APP_BASE_HREF, useValue : '/' },
        {provide: ContentService, useClass: MockContentService}
    ]));

    it('should provide injectable component', inject([NavigationComponent], (component: NavigationComponent) => {

        assertThat(component, is(defined()));
    }));
});

アップグレード前はすべて問題ありませんでした。誰かに同様の問題がありましたplatformStrategy.getBaseHref is not a functionか?もう一度、Angular2 rc4、「karma-jasmine」: 「^1.0.2」および「@ngrx/router」: 「^1.0.0-beta.1」を使用しています。前もって感謝します。

**** アップデート ****

addProviders([])確かではありませんが、IDE に「addProviders のシンボルを解決できません」というエラーが表示されるため、問題は から発生していると思いますが、それはノード モジュールにあり、正しくインポートしています!

import {
    it,
    describe,
    xdescribe,
    beforeEach,
    addProviders,
    async,
    inject
} from '@angular/core/testing';
4

1 に答える 1

0

私もこの問題を抱えていました。おそらく問題は解決しないでしょうが、「場所」を挿入しない限り、エラーは発生しないことを知っておくと役立つ場合があります。しかし、これは明らかに一時的な回避策にすぎません。

于 2016-07-14T12:41:44.370 に答える