Prüfung - nicht lösen Können alle Parameter für (ClassName)
Kontext
Erstellte ich eine ApiService
Klasse, um in der Lage sein, mit unseren custom-API Abfragen, die während der Nutzung unserer eigenen serializer + andere features.
ApiService
's Konstruktor-Signatur:
constructor(metaManager: MetaManager, connector: ApiConnectorService, eventDispatcher: EventDispatcher);
MetaManager
ist eine injizierbare service, Griffe api-metadatas.ApiConnectorService
ist eine Dienstleistung, die VerpackungHttp
um unsere benutzerdefinierte Header und Signatur-system.EventDispatcher
ist im Grunde Symfony event dispatcher-system, in Maschinenschrift.
Problem
Wenn ich testen die ApiService
ich eine Initialisierung in beforeEach
:
beforeEach(async(() => {
TestBed.configureTestingModule({
imports : [
HttpModule
],
providers: [
ApiConnectorService,
ApiService,
MetaManager,
EventDispatcher,
OFF_LOGGER_PROVIDERS
]
});
}));
und es funktioniert gut.
Dann Stell ich meinen zweiten spec-Datei, die für ApiConnectorService
mit diesem beforeEach
:
beforeEach(async(() => {
TestBed.configureTestingModule({
imports : [HttpModule],
providers: [
ApiConnectorService,
OFF_LOGGER_PROVIDERS,
AuthenticationManager,
EventDispatcher
]
});
}));
Und alle tests mit diesem Fehler fehlschlagen:
Fehler: Kann nicht beheben Sie alle Parameter für die ApiService: (MetaManager, ?, EventDispatcher).
- Wenn ich entfernen
api-connector-service.spec.ts
(ApiConnectorService
's spec-Datei) von meinem geladenen tests,ApiService
's tests erfolgreich sein werden. - Wenn ich entfernen
api-service.spec.ts
(ApiService
's spec-Datei) von meinem geladenen tests,ApiConnectorService
's tests erfolgreich sein werden.
Warum habe ich diesen Fehler? Wie es scheint, den Zusammenhang zwischen meiner zwei Dateien in Konflikt stehen, und ich weiß nicht, warum und wie man dieses Problem beheben.
InformationsquelleAutor Supamiu | 2016-09-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Problem war nicht wirklich gelöst in der gewählten Antwort, das ist wirklich nur eine Empfehlung für das schreiben von tests, sondern vielmehr in die Kommentare, und Sie haben zu Folgen Sie einem link und suchen Sie es dort. Da ich ein anderes Problem hatte mit dem gleichen Fehler, werde ich beide Lösungen hier.
Wenn Sie haben ein Fass (index.ts-oder multi-export-Datei) wie folgt:
Dann könnten Sie eine Fehlermeldung erhalten, wie
EXCEPTION: Can't resolve all parameters for MyComponent: (?)
.Um es zu beheben, müssen Sie exportieren Sie den Dienst, bevor Sie die Komponente:
Den gleichen Fehler können passieren aufgrund einer
circular dependency
wodurch eineundefined
service importieren. Um zu überprüfen,console.log(YourService)
nach dem Import (in der test-Datei, wo das Problem geschieht). Wenn es nicht definiert, die Sie möglicherweise gemacht haben einen index.ts-Datei (Fass) Export sowohl der service und die Datei mittels (Komponente/Wirkung/was auch immer Sie prüfen) - durch das einspielen der service von der index-Datei, wo beide exportiert werden (so dass der Kreis).Finden Sie die Datei, und importieren Sie den service, den Sie benötigen, direkt aus
your.service.ts
- Datei anstatt der index.InformationsquelleAutor Kesarion