it-swarm.com.de

Angular 4 - Failed: Kann nicht alle Parameter für ActivatedRoute auflösen: (?,?,?,?,?,?,?,?,?,?)

Ich habe auf den folgenden Link verwiesen, um die Antworten zu erhalten, konnte jedoch keine funktionierende Lösung für mein Szenario finden. Fehler: (SystemJS) Kann nicht alle Parameter für ActivatedRoute auflösen: (?,?,?,?,?,?,?,?,?)

Aus diesem Grund habe ich versucht, die aktivierte Route von den Anbietern zu entfernen, und der Teststand wird immer noch nicht bestanden. Es zeigt

Fehler: Kein Provider für ActivatedRoute!

Hier ist also mein Code, ich möchte meinen Prüfstand in der angular -Anwendung ausführen, die Jasmine verwendet.

import { ActivatedRoute } from '@angular/router';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { RouterModule, Routes } from '@angular/router';
import { RouterTestingModule } from '@angular/router/testing';

describe('SomeComponent', () => {
  let component: SomeComponent;
  let fixture: ComponentFixture<SomeComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({ 
      imports: [ RouterModule, RouterTestingModule ],
      declarations: [ SomeComponent ],
      providers: [ ActivatedRoute ],
    })
    .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(SomeComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });
});

Fehler beim Abrufen

enter image description here

21

Sie möchten eine gefälschte ActivatedRoute in Ihre Komponente einfügen, da Sie diese im Test selbst erstellen und der Router sie daher nicht für Sie erstellt und eine ActivatedRoute einfügt. Sie können also so etwas verwenden:

describe('SomeComponent', () => {

  const fakeActivatedRoute = {
    snapshot: { data: { ... } }
  } as ActivatedRoute;

  beforeEach(async(() => {
    TestBed.configureTestingModule({ 
      imports: [ RouterTestingModule ],
      declarations: [ SomeComponent ],
      providers: [ {provide: ActivatedRoute, useValue: fakeActivatedRoute} ],
    })
    .compileComponents();
  }));
});
37
JB Nizet

Hier ist eine Lösung für angular 7

{
    provide: ActivatedRoute,
    useValue: {
        snapshot: {
            paramMap: {
                get(): string {
                    return '123';
                },
            },
        },
    },
},
0
Pete
{
  provide: ActivatedRoute,
  useValue: {
    snapshot: {
      queryParamMap: {
        get(): number {
          return 6;
        }
      }
    }
  }
}
0
Sourav Golui