测试通用角度组件(非通用类)

时间:2019-05-28 21:51:27

标签: angular typescript

是否可以测试角度通用组件?

例如,如果我有

match()

其中T可以是任何数量的类。

然后最终我想编写一个Jasmine测试,但是在创建测试装置时我无法确定正确的语法:

@Component({
    ...
})
export class MyComponent<T> implements OnInit {
   public constructor(
      private context: T
   );
}

TSLint在这里抱怨:

fixture = TestBed.createComponent(MyComponent<MyTestObject>);

它显然认为我需要一个构造函数(?),但不清楚如何或在何处实现它。

我正在尝试的可能吗?我可以找到通用组件的示例。我 无法 找到有关设置测试治具/组件的示例

2 个答案:

答案 0 :(得分:0)

我想象TestBed.createComponent()希望将javascript类作为参数。 MyComponent<MyTestObject>无效的javascript。

也许您打算放TestBed.createComponent(MyComponent as typeof MyComponent<MyTestObject>)(或者正确的语法是MyComponent as (typeof MyComponent)<MyTestObject>-我不确定)。

或者,如果TestBed#createComponent()是通用的,则您可能想做TestBed.createComponent<MyComponent<MyTestObject>>(MyComponent)

答案 1 :(得分:0)

TestBed.createComponent 函数本身是泛型的,并返回一个 componentFixture,因此您应该在此处应用泛型。对于您的用例,您应该这样做:

fixture = TestBed.createComponent<MyComponent<MyTestObject>>(MyComponent);

记住将你的装置声明为

let fixture: ComponentFixture<MyComponent<MyTestObject>>;