Ben*_*ros 23 dependency-injection typescript angular2-testing angular angular-test
我有一个管道,如下所示:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我想测试它如下:
describe('Pipe: Sanatiser', () => {
let pipe: SanitiseHtmlPipe;
beforeEach(() => {
pipe = new SanitiseHtmlPipe(new DomSanitizer());
});
it('create an instance', () => {
expect(pipe).toBeTruthy();
});
});
Run Code Online (Sandbox Code Playgroud)
DomSanatizer是一个抽象类,通过将其传递给构造函数由typescript自动装配:
constructor(private _sanitizer: DomSanitizer) {}
Run Code Online (Sandbox Code Playgroud)
目前我得到的是打字稿errror:
无法创建抽象类'DomSanitizer'的实例.
当实例化传递给Angular中的构造函数的依赖项时,有没有人知道什么是typescript?或者测试这样的东西的方法是什么?
Jot*_*edo 36
由于管道中的DI,您需要配置测试环境(测试台)来解决依赖关系:
import { BrowserModule, DomSanitizer } from '@angular/platform-browser';
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();
}));
});
Run Code Online (Sandbox Code Playgroud)
Ala*_*ard 13
以防万一有人想重用 Pipe 的构造函数,您可以使用 TestBed 来实现相同的结果:
let pipe: SafeHtmlPipe;
let sanitized: DomSanitizer
beforeEach(async() => {
TestBed.configureTestingModule({
providers: [DomSanitizer]
});
sanitized = TestBed.get(DomSanitizer);
pipe = new SafeHtmlPipe(sanitized);
});
it('create an instance', () => {
expect(pipe).toBeTruthy();
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5319 次 |
最近记录: |