2017-06-26 8 views
0

Bei der Verwendung der folgenden Konfiguration für eine Testvorrichtung bekomme ich Beschwerden, dass das Tag nicht gefunden werden kann. die MockSelectionToolComponent direkt in AppModule Substituieren funktioniert gut, so noch etwas anderes sein muss ...eckig Testbed OverrideModule funktioniert nicht

// Add the imported module to the imports array in beforeEach 
    beforeEach(() => { 
     TestBed.configureTestingModule({ 
      declarations: [MockSelectionToolComponent], 
      imports: [ 

       AppModule 
      ] 
     }).overrideModule(AppModule, { 
      remove: { 
       declarations: [SelectionToolComponent] 
      } 
     }).compileComponents(); 

     fixture = TestBed.createComponent(MappingComponent); 
     component = fixture.componentInstance; 
     fixture.detectChanges(); 
     component.initialiseMap(); 
    }); 

Error: Template parse errors: 'app-selection-tool' is not a known element:

Antwort

0

Also in der Tat fügen wir es nicht auf die Erklärung des Testmoduls, sondern dem ursprünglichen Modul:

// Add the imported module to the imports array in beforeEach 
beforeEach(() => { 
    TestBed.configureTestingModule({ 
     declarations: [], 
     imports: [ 

      AppModule 
     ] 
    }).overrideModule(AppModule, { 
     remove: { 
       declarations: [SelectionToolComponent] 
      }, 
     add: { 
       declarations: [MockSelectionToolComponent] 
     } 
    }).compileComponents(); 

    fixture = TestBed.createComponent(MappingComponent); 
    component = fixture.componentInstance; 
    fixture.detectChanges(); 
    component.initialiseMap(); 
}); 

Viel Glück finden, dass überall dokumentiert.

0

Wie Sie angegeben haben, ist es nicht möglich, die Überschreibungen direkt zu deklarieren, aber in einer verketteten überschreibenden Methode. Sie können auch die setzen Syntax verwenden, in der Komponente hier zum Beispiel gilt auch für das Modul.

TestBed.configureTestingModule({ 
     imports: [RouterTestingModule], 
     declarations: [MockProductCardComponent, ProductListComponent] 
     }) 
     .overrideComponent(ProductListComponent, { 
      set: { 
       providers: [ 
        { provide: ActivatedRoute, useValue: { fragment: Observable.of(fragment) }}, 
        { provide: PageScrollService, useClass: MockPageScrollService } 
       ] 
      } 
     }) 
Verwandte Themen