apu*_*pun 4 mocking jasmine testbed angular-components angular
我需要在 Angular 中测试一个组件,它只有一种方法和某些 @Input 和 @Output 属性-
updateColumns(eventValue: ManagedColumns) {
this.applyColumnChanges.emit(eventValue);
}
Run Code Online (Sandbox Code Playgroud)
还有另一个组件具有应该调用上述方法的方法。调用因为它正在发出一个事件,我相信该事件将被另一个事件消耗,而后者又会发出另一个事件,该事件被另一个组件中的第三个消耗 -
applyChanges() {
this.apply.emit(<ManagedColumns>{
selectedColumns: this.selectedItems.slice(),
availableColumns: this.availableItems.slice()
});
this.closeDialog();
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试测试 updateColumns 但不知道该怎么做?是否可以模拟 applyChanges 依次发送到 updateColumns 并且我们可以检查相同的值?
如果我试过——
manageColumnsComponent = TestBed.createComponent(ManageColumnsComponent).componentInstance;
spyOn(manageColumnsComponent.applyChanges, 'emit');
Run Code Online (Sandbox Code Playgroud)
得到错误 -
[ts] Argument of type '"emit"' is not assignable to parameter of type 'never'.
Run Code Online (Sandbox Code Playgroud)
小智 8
您需要spyOn实际eventEmitter变量,而不是函数。
spyOn(manageColumnsComponent.apply, 'emit')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9870 次 |
| 最近记录: |