Seit ich auf Angular2 rc3 aktualisiert habe, sind alle Tests, die den Router benötigen, jetzt defekt. Zuvor benutzte ich die ROUTER_FAKE_PROVIDERS, die vom Router/der Testdatei verfügbar waren, aber das scheint nicht mehr zu existieren. Irgendwelche Vorschläge?Angular2 rc3 Router in Tests injizieren
0
A
Antwort
0
Werfen Sie einen Blick auf my answer here, scheinen Sie ein ähnliches Problem zu haben.
Beim Gerätetest verursacht manchmal ein bestimmter Dienst Probleme, nur weil er nicht in einer normalen Umgebung verwendet wird. Sie können testen, ob es aufgerufen wurde, ohne dass der Komponententest den gesamten Dienst durchlaufen hat. Tun Sie dies, indem Sie eine Scheinklasse erstellen.
auf diesem Posten Basierend, hier ist etwas, was man tun könnte:
describe('foo',() => {
class MockRouter{}
beforeEachProviders(() => [
{provide: ROUTER_PROVIDERS, useClass: MockRouter}
]);
it('should foo',
async(inject([FooComponent, ROUTER_PROVIDERS], (foo: FooComponent, mockRouter: MockRouter) => {
expect(mockRouter).toHaveBeenCalled();
});
})));
2
ich dieses Setup verwendet, die den Router initialisieren gearbeitet. https://github.com/angular/angular/blob/master/modules/%40angular/router/test/router.spec.ts
Expect Angular2 bietet dies als TestProvider bald.
import {Location, LocationStrategy} from '@angular/common';
import {SpyLocation} from '@angular/common/testing';
import {MockLocationStrategy} from '@angular/common/testing/mock_location_strategy';
import {Component, Injector, ComponentResolver} from '@angular/core';
import {ActivatedRoute, ActivatedRouteSnapshot, CanActivate, CanDeactivate, DefaultUrlSerializer, Event, NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Params, ROUTER_DIRECTIVES, Router, RouterConfig, RouterOutletMap, RouterStateSnapshot, RoutesRecognized, UrlSerializer} from '@angular/router';
export function provideTestRouter(RootCmp:any, config: RouterConfig):any[]{
return [
RouterOutletMap,
{provide: UrlSerializer, useClass: DefaultUrlSerializer},
{provide: Location, useClass: SpyLocation},
{provide: LocationStrategy, useClass: MockLocationStrategy},
{
provide: Router,
useFactory: (resolver: ComponentResolver, urlSerializer: UrlSerializer, outletMap: RouterOutletMap, location: Location, injector: Injector) => {
return new (<any>Router)(
RootCmp, resolver, urlSerializer, outletMap, location, injector, config);
},
deps: [ComponentResolver, UrlSerializer, RouterOutletMap, Location, Injector]
},
{provide: ActivatedRoute, useFactory: (r: Router) => r.routerState.root, deps: [Router]},
];
};
Verwandte Themen
- 1. angular2 rc3 Router alpha 3.0.0.7 Standardroute
- 2. Angular 2 rc3 Router abonnieren
- 3. HashLocationStrategy in Angular2 rc3 funktioniert nicht
- 4. Angular 2 Routing - Router RC3
- 5. Angular2 CanActivate von Beta zu aktuellen RC3
- 6. Injizieren Anbieter in angular2
- 7. Angular 2 RC3 Router-veraltetes Paket Problem
- 8. Wie kann ich Location in angular2 injizieren?
- 9. Status auf Basis der aktuellen Route in Angular2 (RC3) setzen
- 10. reagieren - Router mitRouter nicht Router injizieren
- 11. Angular2 RC.1 - Router in Gerätetest einspeisen
- 12. ANGULAR2-RC3 Routing: Kann nicht alle Parameter für provideRouter auflösen: (?,?)
- 13. Wie kann ich Komponententests durchführen, die vom RC3-Router abhängen?
- 14. Wie Komponente Router in Angular 1.5 injizieren?
- 15. Angular2 Router in einer Komponente
- 16. Angular2 Router und OnInit
- 17. Angular2 Router und navigieren
- 18. Einen Singleton-Dienst in angular2 injizieren
- 19. Angular2 injizieren Mutter Service in Kind
- 20. Angular2 router VS ui-router-ng2 VS ngrx router
- 21. Angular 2 rc3 Routing-Probleme
- 22. Unterschied zwischen Router und Router-veraltet in angular2
- 23. Angular2 Router V3 und Menüauswahl
- 24. Angular2: Router nicht params bevöl
- 25. Angular2 Router-veraltete Abhängigkeiten nicht
- 26. Angular Jasmine UI Router injizieren Auflösung Wert in Test
- 27. Angular2 Component Router grundlegendes Problem
- 28. Angular2: Injizieren eines nicht @Injectable Klasse
- 29. Router funktioniert nicht in angular2-rc1
- 30. Passe Zwei parametrs in Router Angular2
Haben Sie das Problem behoben? –