【发布时间】:2020-08-10 17:11:37
【问题描述】:
我目前正在编写单元测试,其中一部分逻辑是检查输入元素是否属于某种类型。由于我使用的是 angular,因此我无法在没有严重开销的情况下创建此对象。 (有问题的对象是一个 MatSelect)。
现在我想知道是否有办法,只定义一个对象并创建/转换和对象到这个特定的 tpye,而不使用 new?
这是我要创建的对象的构造函数:
export declare class MatSelect ...
constructor(_viewportRuler: ViewportRuler, _changeDetectorRef: ChangeDetectorRef, _ngZone: NgZone, _defaultErrorStateMatcher: ErrorStateMatcher, elementRef: ElementRef, _dir: Directionality, _parentForm: NgForm, _parentFormGroup: FormGroupDirective, _parentFormField: MatFormField, ngControl: NgControl, tabIndex: string, scrollStrategyFactory: any, _liveAnnouncer: LiveAnnouncer);
到目前为止,这是我累的:
const dummy = <MatSelect><unknown> {};
const dummy2 = {} as MatSelect;
两者都不满足instanceof检查
【问题讨论】:
-
这就是 instanceof 在 javascript 中的工作方式。 Typescript 的类型断言(
as或<>)在编译时擦除,在运行时无效
标签: typescript jasmine karma-jasmine instanceof