2017-08-09 5 views
0

Ich benutze angular2 und uirouter für das Routing. Ich habe erfolgreich ein Modul in der Anwendung implementiert. Aber das Problem entsteht, wenn ich versuche, meine Anwendung zu testen. Wo ich Karma benutze, Jasmin und initiiere es mit npm test. aber angetroffen mit ERROR:Can't resolve all parameters for UIRouter: (?, ?).Kann nicht alle Parameter für UIRouter auflösen: (?,?)

Ich habe "UIRouter" in *.spec.ts Datei importiert und es in Provider-Array wie folgt hinzugefügt.

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

Aber kein Glück. Jede Hilfe wird geschätzt.

Antwort

0

Gelöst es !!! Entfernen Sie einfach die UIRouter von providers Array, aber behalten Sie die Import-Anweisung für sie. und ja, es funktioniert.

+0

Hallo shiv! Könnten Sie bitte mehr Details zu Ihrer Auflösung angeben? Ich habe das gleiche Problem und Ihre Antwort hat mir nicht geholfen, meins zu lösen. Ich habe UIRouterModule.forChild in meinem Modul und ich weiß nicht, wie man es in der Spezifikationsdatei verspottet. Danke für deine Hilfe :) – Pitchou

+0

Hey Pitchou, würdest du bitte deinen Spezifikationsdateicode für bessere Klarheit deines Problems hinzufügen. Ich brauche nur Ihre Importe und vor jeder Funktion Daten. – shiv

0

Am letzten Freitag habe ich endlich einen Weg gefunden, es zum Laufen zu bringen. Es ist kein sauberer Weg, aber es funktioniert zumindest.

Ich importiere den UIRouter.forRoot mit den Zuständen meines Feature-Moduls und ich gebe den APP_BASE_HREF-Wert für den Root-Provider von UIRouter.

Hier ist meine before:

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

Wenn Sie eine bessere Art und Weise kennen, würde ich gerne wissen! :)

Verwandte Themen