angular - 角度测试:覆盖以使用模板而不是 templateUrl
问题描述
我有一个包含iframe
. 为了防止在测试中从 iframe 加载不存在的 URL,我想模拟组件的模板。我以为我可以使用它,TestBed.overrideComponent()
但它没有效果。测试运行时,我可以看到原始模板存在并且 iframe 加载不存在的 url。
我尝试了什么:
fixture = TestBed.overrideComponent(IFrameComponent, {
remove: {
templateUrl: './iframe.component.html'
},
add: {
template: '<div></div>'
}
}).createComponent(IFrameComponent);
如何覆盖要使用的组件template
而不是templateUrl
?
解决方案
它对我不起作用的原因是我打电话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);
推荐阅读
- python - 将参数传递给其他属性
- django-rest-framework - 如何将帐户与 Django rest auth / all auth 连接?
- python - 可调用前缀中的 Discord.py 错误:采用 0 个位置参数,但给出了 2 个
- mysql - 如何选择中值?
- jsf - Primefaces 图表缩放和主题行为
- kotlin - 函数类型 (T1,T2,..,Tn) -> R 与接口 FunctionN 之间的关系
- android - 使用Android Studio从firebase中的某个位置检索数据
- python - 如何从 DataFrame 中检索两个数字?
- java - Java 编译器显示“java.sql.SQLException:没有为 jdbc::mysql://localhost:3306/test 找到合适的驱动程序”,尽管有驱动程序
- docker - 在 docker 上本地访问 redis - docker compose