【问题标题】:Unsafe value used in a Resource context (iframe)资源上下文中使用的不安全值 (iframe)
【发布时间】:2021-03-11 00:21:37
【问题描述】:

我正在尝试测试我的组件,其中我使用预签名 URL 从 S3 呈现 PDF 文件,然后我使用 bypassSecurityTrustResourceUrl,这很好用,但就在我尝试测试这个组件时,我得到以下错误。

This is the error i'm getting

这是我的 .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();
      });

如果有人可以帮助我,我从昨天开始就被这个错误困住了。

【问题讨论】:

    标签: angular unit-testing karma-jasmine angular-dom-sanitizer


    【解决方案1】:

    尝试更改模拟以返回空字符串或未定义。

    既然你在嘲笑它,我认为它可能会导致问题。

    也许可以尝试提供真正的 DomSanitizer 或模拟它,如下所示。

           {
              provide: DomSanitizer,
              useValue: {
                sanitize: (ctx: any, val: string) => undefined,
                bypassSecurityTrustResourceUrl: (val: string) => undefined,
              },
            },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多