簡體   English   中英

角度單元測試:使用泛型來創建組件

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM