[英]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.