我正在使用angular2和uirouter进行路由。我已经在应用程序中成功实现了uirouter模块。但是当我尝试测试我的应用程序时出现问题。我在使用业力,Jasmin并使用npm test
启动它。但遇到了ERROR:Can't resolve all parameters for UIRouter: (?, ?).
我在*.spec.ts
文件中导入了“UIRouter”,并将其添加到providers数组中,如下所示。
import { UIRouterModule } from '@uirouter/angular';
import { UIRouter } from "@uirouter/core";
describe('Footer Menus', () => {
let footerMenuBlServiceRef:FooterMenuBLService;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [],
declarations: [],
providers: [UIRouter],
})
.compileComponents();
}));
但没有运气。任何帮助将不胜感激。
解决了!!!只需从UIRouter
数组中删除providers
,但保留import语句。是的,它的工作。
在上个星期五,我终于找到了一种方法让它发挥作用。它不是一种干净的方式,但它至少可以工作。
我使用我的功能模块的状态重新导入UIRouter.forRoot,并为UIRouter的Root Provider提供APP_BASE_HREF值。
这是我的BeforeEach:
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
HomeComponent,
HomeCardComponent
],
imports: [
AppMaterialModule,
// Always import root UIRouter module when testing a component including routing
UIRouterModule.forRoot({states: HOME_STATES})
],
providers: [
// Also, include the base href value when testing a component including routing
{provide: APP_BASE_HREF, useValue: '/'}
],
}).compileComponents();
}));
如果你知道更好的方式,我很乐意知道! :)
UI-Router source可以提供一些帮助。这对我有用:
import { UIRouterModule } from '@uirouter/angular';
...
TestBed.configureTestingModule({
...
imports: [UIRouterModule.forRoot({ useHash: true })],
})