我将我的 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 中,因为我的 IDE 中有错误 - “无法解析 addProviders 的符号”,但它在我的节点模块中,并且我正在正确导入它!
import {
it,
describe,
xdescribe,
beforeEach,
addProviders,
async,
inject
} from '@angular/core/testing';