【发布时间】:2018-05-10 21:33:51
【问题描述】:
我有一个管道可以清理 HTML,如下所示:
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);
}
}
我想测试如下:
describe('Pipe: Sanatiser', () => {
let pipe: SanitiseHtmlPipe;
beforeEach(() => {
pipe = new SanitiseHtmlPipe(new DomSanitizer());
});
it('create an instance', () => {
expect(pipe).toBeTruthy();
});
});
DomSanatizer 是一个抽象类,由 typescript 通过将其传递给构造函数来自动装配:
constructor(private _sanitizer: DomSanitizer) {}
目前我收到打字稿错误:
无法创建抽象类“DomSanitizer”的实例。
有谁知道 typescript 在实例化传递给 Angular 中的构造函数的依赖项时会做什么?或者测试这种东西的方法是什么?
【问题讨论】:
-
检查 github.com/angular/angular/blob/master/packages/… 你应该注入一个 DomSanitizerImpl 的实例
-
它很难找到它:找不到模块:错误:无法解析'@angular/platform-browser/src/security/dom_sanitization_service'
-
看起来它不是公共 api 的一部分
标签: angular typescript dependency-injection angular2-testing angular-test