单元测试代码里的createComponent,是通过TestBedRender实现的:
TestBedRenderer3:
获得注入的TestComponentRenderer:
const result = this.testModuleRef.injector.get(token, UNDEFINED, flags);
得到DomTestComponentRenderer:
一个硬编码的rootElementId:root0
创建一个template元素,里面包含一个div元素,id为root0:
type就是createComponent的输入参数:
type as any之后,其ɵcmp属性里包含了很多信息,简而言之,就是Component的定义,也就是metadata:
使用ComponentDefinition创建ComponentFactory:
在ngZone里运行initComponent,并将结果插入到activeFixtures里,并返回fixture:
更多Jerry的原创文章,尽在:“汪子熙”: