角度测试:重写以使用模板而不是templateUrl

时间:2018-10-22 09:54:46

标签: angular testing mocking testbed

我有一个包含<attr name="textColorError" type="color|reference"/> 的组件。为了防止在测试中从iframe加载不存在的URL,我想模拟组件的模板。我以为可以使用iframe来做到这一点,但是没有效果。测试运行时,我可以看到原始模板存在,并且iframe加载了不存在的网址。

我尝试过的事情:

TestBed.overrideComponent()

如何覆盖组件以使用fixture = TestBed.overrideComponent(IFrameComponent, { remove: { templateUrl: './iframe.component.html' }, add: { template: '<div></div>' } }).createComponent(IFrameComponent); 而不是template

1 个答案:

答案 0 :(得分:2)

它对我不起作用的原因是我在{em> TestBed.overrideComponent()之后打了compileComponents()

正确的订单是这样:

TestBed.configureTestingModule({
   declarations: [IFrameComponent]
}).overrideComponent(IFrameComponent, {
   remove: {
      templateUrl: './iframe.component.html'
   },
   add: {
      template: '<div data-test-iframe="iframe"></div>'
   }
}).compileComponents();
fixture = TestBed.createComponent(IFrameComponent);