0

Ich habe ein Rohr, das sanatises HTML wie folgt:Prüfrohr mit Abhängigkeiten von Diensten

import { Pipe, PipeTransform } from '@angular/core'; 
import { DomSanitizer } from '@angular/platform-browser'; 

@Pipe({ 
    name: 'sanitiseHtml' 
}) 

export class SanitiseHtmlPipe implements PipeTransform { 

constructor(private _sanitizer: DomSanitizer) {} 

    transform(value: any): any { 
     return this._sanitizer.bypassSecurityTrustHtml(value); 
    } 

} 

Ich möchte es testen, wie unten:

describe('Pipe: Sanatiser',() => { 
    let pipe: SanitiseHtmlPipe; 

    beforeEach(() => { 
     pipe = new SanitiseHtmlPipe(new DomSanitizer()); 
    }); 

    it('create an instance',() => { 
     expect(pipe).toBeTruthy(); 
    }); 
}); 

Die DomSanatizer ist eine abstrakte Klasse, die autowired ist von Typoskript, indem sie in einen Konstruktor:

constructor(private _sanitizer: DomSanitizer) {} 

Zur Zeit habe ich das Typoskript errror:

Weiß jemand, was Typoskript tut, wenn Abhängigkeiten in einem Konstruktor in Angular instanziiert werden? Oder was ist der Weg, um so etwas zu testen?

+0

überprüfen https://github.com/angular/angular/blob/master/packages/platform-browser/src/security/ dom_sanitization_service.ts sollte eine Instanz von DomSanitizerImpl injiziert werden –

+0

Es hat Mühe, es zu finden: Modul nicht gefunden: Fehler: '@ angular/platform kann nicht aufgelöst werden -browser/src/security/dom_sanitization_service ' –

+0

sieht aus wie seine nicht Teil der Öffentlichkeit api –

Antwort

2

Wegen der DI in die Pfeife, benötigen Sie eine Testumgebung (Prüfstands) konfigurieren, um die Abhängigkeit zu beheben:

import { inject, TestBed } from '@angular/core/testing'; 

describe('SanitiseHtmlPipe',() => { 
    beforeEach(() => { 
    TestBed 
     .configureTestingModule({ 
     imports: [ 
      BrowserModule 
     ] 
     }); 
    }); 

    it('create an instance', inject([DomSanitizer], (domSanitizer: DomSanitizer) => { 
     let pipe = new SanitiseHtmlPipe(domSanitizer); 
     expect(pipe).toBeTruthy(); 
    }); 
}); 

Hinweis: Ich bin in allen Dingen unwissend vervollständigen im Zusammenhang mit Winkeltestumgebungen, Es gibt also eine hohe Wahrscheinlichkeit, dass die Antwort falsch ist, aber ich wollte selbst etwas recherchieren.

+0

Ich habe den Test tatsächlich ausgeführt, indem ich die Zeile auskommentiert habe: TestBed.resetTestEnvironment(); Entfernen Sie diese und ich werde korrekt markieren –

+0

Aktualisiert, schön zu hören! –

Verwandte Themen