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

问题描述 投票:0回答:3

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

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

angular-ui-router karma-jasmine
3个回答
1
投票

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


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

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


0
投票

UI-Router source可以提供一些帮助。这对我有用:

import { UIRouterModule } from '@uirouter/angular';
...
TestBed.configureTestingModule({
    ...
    imports: [UIRouterModule.forRoot({ useHash: true })],
})
© www.soinside.com 2019 - 2024. All rights reserved.