【问题标题】:Angular Unit Testing: Using Generics to Create ComponentAngular 单元测试:使用泛型创建组件
【发布时间】:2019-09-27 11:42:51
【问题描述】:

我正在尝试围绕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&lt;T&gt;

【问题讨论】:

    标签: angular typescript unit-testing typescript-generics


    【解决方案1】:

    泛型只存在于编译时而不是运行时。所以不能推导出T的类型。

    Get type of generic parameter

    【讨论】:

      【解决方案2】:

      您可以选择使用Type&lt;T&gt; 作为函数的参数:

      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&lt;TestComponent&gt;

      【讨论】:

        猜你喜欢
        • 2019-05-06
        • 2018-06-19
        • 2021-01-05
        • 2017-01-27
        • 1970-01-01
        • 2011-12-02
        • 1970-01-01
        • 2017-10-10
        • 1970-01-01
        相关资源
        最近更新 更多