我正在尝试测试我的组件,其中我使用预签名 URL 从 S3 呈现 PDF 文件,然后我使用 bypassSecurityTrustResourceUrl,这很好用,但是当我尝试测试这个组件时,我得到以下错误。
这是我的 .spec
@Injectable()
class MockService extends RestService{
getPDFUrl(){
return of({
"timestamp": "2021-03-10T02:17:28.699Z",
"statusCode": 200,
"url": "someURL"
})
}
getDocument() {
{someinfo:"infoo"}
}
}
describe('DashboardDetailsComponent', () => {
let component: DashboardDetailsComponent;
let fixture: ComponentFixture<DashboardDetailsComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [HomeModule, HomeRoutingModule, HttpClientModule, RouterTestingModule, NoopAnimationsModule, MatDialogModule ],
declarations: [ DashboardDetailsComponent, ],
providers: [
{
provide: DomSanitizer,
useValue: {
sanitize: (ctx: any, val: string) => val,
bypassSecurityTrustResourceUrl: (val: string) => val,
},
},
// more providers
],
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(DashboardDetailsComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
这是我使用 url 的 html 代码
<iframe [src]='url || ""' width="100%" height="350"></iframe>
这是我设置 url 的 .ts 代码
this._restService.getPDFUrl(this.document[0].templateURL).subscribe(data => {
this.url = this._domSanitizer.bypassSecurityTrustResourceUrl(data.url);
}, err => {
this.failLoadDocument();
});
如果有人可以帮助我,我从昨天开始就一直坚持这个错误。