Angular2 rc.4升级中断测试 - platformStrategy.getBaseHref不是函数

时间:2016-07-05 12:28:43

标签: typescript angular jasmine ngrx

我将我的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,&#34; karma-jasmine&#34;:&#34; ^ 1.0.2&#34;和&#34; @ ngrx / router&#34;:&#34; ^ 1.0.0-beta.1&#34;。提前谢谢。

****更新****

我无法确定,但我认为问题来自addProviders([]),因为我在IDE中出现错误 - &#39;无法解析addProviders&#39;但它在我的节点模块中,我正确导入它!

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

1 个答案:

答案 0 :(得分:0)

我也有这个问题。 虽然它可能无法解决您的问题,但可能有助于了解,对我而言,只要我不注入“位置”,就不会发生错误。 但这显然只是暂时的工作。