2017-03-29 2 views
0

Ich laufe durch das Angular2 Test-Tutorial. Ich bin ziemlich neu bei Jasmine/Karma, also könnte das etwas Grundlegendes sein. Ich habe bemerkt, dass, wenn ich die „NPM-Test“ ausgeführt haben, dass, wenn ich eine Änderung vornehmen, die Test-Runner neu zu laden versucht, bekommt aber einen Fehler:Angular2 Karma Test Runner nicht nachladen

ERROR in C:/dev/unittest1/src/app/banner-inline/banner-inline.component.spec.ts (12,11): Cannot find name 'HTMLElement'.)

Hier ist die Spezifikation Code (ziemlich genau genommen aus here):

importieren {ComponentFixture, TestBed, ComponentFixtureAutoDetect} aus '@ angular/core/testing'; importieren {Von} aus '@ Angular/Plattform-Browser'; Importieren Sie {DebugElement} von '@ angular/core';

import { BannerInlineComponent } from './banner-inline.component'; 

describe('BannerInlineComponent (inline template)',() => { 

    let comp: BannerInlineComponent; 
    let fixture: ComponentFixture<BannerInlineComponent>; 
    let de: DebugElement; 
    let el: HTMLElement; 

    beforeEach(() => { 
    TestBed.configureTestingModule({ 
     declarations: [BannerInlineComponent], // declare the test component 
     providers: [{ provide: ComponentFixtureAutoDetect, useValue: true }] 
    }); 

    fixture = TestBed.createComponent(BannerInlineComponent); 

    comp = fixture.componentInstance; // BannerInlineComponent test instance 

    // query for the title <h1> by CSS element selector 
    de = fixture.debugElement.query(By.css('h1')); 
    el = de.nativeElement; 
    }); 

    it('should display original title',() => { 
    expect(el.textContent).toContain(comp.title); 
    }); 

    it('should still see original title after comp.title change',() => { 
    const oldTitle = comp.title; 
    comp.title = 'Test Title'; 
    fixture.detectChanges(); 
    // Displayed title is old because Angular didn't hear the change :(
    expect(el.textContent).toContain(oldTitle); 
    }); 

    it('should display updated title after detectChanges',() => { 
    comp.title = 'Test Title'; 
    fixture.detectChanges(); // detect changes explicitly 
    expect(el.textContent).toContain(comp.title); 
    }); 
}); 

Wenn ich den Testläufer stoppe und neu starte, funktioniert alles gut. Warum bekomme ich diesen Fehler und wie kann ich das verhindern?

+0

Können Sie bitte die Spec-Datei schreiben, wird der Fehler es sich von selbst gibt an, dass es zu Flossen können isnot Das erforderliche Attribut in der Spezifikationsdatei, bekannt als HTML-Element, das auf der Grundlage bestimmter Auslöser benötigt wird, muss die Spezifikationsdatei anzeigen. –

+0

Ich habe den Spezifikationscode hinzugefügt. Denken Sie daran, dass es kein Problem ist, dies mit einem Neubeginn des "npm-Tests" zu finden. –

Antwort

1

Ich denke, in Ihrem tsconfig.json in Ihrem Projekt sollten Sie die dom Bibliothek in das lib Array hinzufügen:

"lib": ["es6", "dom", "es2015.iterable"], 
+0

Ich vermisste die es2015.iterable, also habe ich es hinzugefügt, aber es hatte keinen Einfluss und ich bekomme immer noch den Fehler. –

+0

@MikeWitt haben Sie Änderungen in der tsconfig.spec.json Datei auch –

+0

Ich habe es jetzt hinzugefügt. Ich habe es auch zu tsconfig.app.json hinzugefügt. Keine dieser Ergänzungen hat geholfen, ich bekomme immer noch den Fehler. –

Verwandte Themen