是否可以测试角度通用组件?
例如,如果我有
match()
其中T可以是任何数量的类。
然后最终我想编写一个Jasmine测试,但是在创建测试装置时我无法确定正确的语法:
@Component({
...
})
export class MyComponent<T> implements OnInit {
public constructor(
private context: T
);
}
TSLint在这里抱怨:
fixture = TestBed.createComponent(MyComponent<MyTestObject>);
它显然认为我需要一个构造函数(?),但不清楚如何或在何处实现它。
我正在尝试的可能吗?我可以找到通用组件的示例。我 无法 找到有关设置测试治具/组件的示例
答案 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>>;