[英]Angular Unit Testing: Using Generics to Create Component
我试图在TestBed.createComponent
周围创建一个通用的包装器,它接受一个类型参数并为该类型创建组件。 但是, TestBed.createComponent
函数采用Type<T>
的参数。 我无法从传入的泛型T参数创建Type<T>
。
export function createTestHarness<T>(): TestHarness<T> { let component: T; let fixture: ComponentFixture<T>; fixture = TestBed.createComponent<T>(**PROBLEM AREA**); component = fixture.componentInstance; fixture.detectChanges(); return new TestHarness<T>(component, fixture); }
有没有办法从传入的类型派生Type<T>
?
泛型仅在编译时存在,而不在运行时存在。 所以你不能得出T的类型。
您可以选择使用Type<T>
作为函数的参数:
function createTestHarness<T>(type: Type<T>): TestHarness<T> {
let component: T;
let fixture: ComponentFixture<T>;
fixture = TestBed.createComponent<T>(type);
component = fixture.componentInstance;
fixture.detectChanges();
return new TestHarness<T>(component, fixture);
}
具有以下用途:
const harness = createTestHarness(TestComponent);
这将返回TestHarness<TestComponent>
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.