无法解析UIRouter的所有参数:(?,?)

时间:2017-08-09 12:49:26

标签: angular-ui-router karma-jasmine

我使用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();
  }));

但没有运气。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

解决了!!! 只需从UIRouter数组中删除providers,但请保留其导入语句。是的,它的工作。

答案 1 :(得分:1)

上周五,我终于找到了一种方法让它发挥作用。它不是一种干净的方式,但它至少可以工作。

我使用我的功能模块的状态重新导入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();
}));

如果你知道更好的方法,我很乐意知道! :)

答案 2 :(得分:0)

UI路由器source可能会有帮助。这对我有用:

import { UIRouterModule } from '@uirouter/angular';
...
TestBed.configureTestingModule({
    ...
    imports: [UIRouterModule.forRoot({ useHash: true })],
})