类型"发出"的参数不能分配给类型参数' never'

时间:2018-05-24 04:53:31

标签: angular jasmine mocking angular-components testbed

我需要在Angular中测试一个只有一个方法和某个@Input和@Output属性的组件 -

  updateColumns(eventValue: ManagedColumns) {
    this.applyColumnChanges.emit(eventValue);
  }

还有另一个组件,它具有应该调用上述方法的方法。调用就像在它发出一个事件,我将相信另一个事件将被消耗,而另一个事件又会发出另一个事件,这个事件被另一个组件中的第三个事件所消耗 -

applyChanges() {
        this.apply.emit(<ManagedColumns>{
            selectedColumns: this.selectedItems.slice(),
            availableColumns: this.availableItems.slice()
        });
        this.closeDialog();
    }

我正在尝试测试updateColumns但是失去了如何做到这一点?是否可以模拟applyChanges,它们依次发出updateColumns,我们可以检查相同的值?

如果我试过 -

manageColumnsComponent = TestBed.createComponent(ManageColumnsComponent).componentInstance;
    spyOn(manageColumnsComponent.applyChanges, 'emit');

获取错误 -

[ts] Argument of type '"emit"' is not assignable to parameter of type 'never'.

1 个答案:

答案 0 :(得分:2)

您需要监视实际的eventEmitter变量,而不是函数。

spyOn(manageColumnsComponent.apply,'emit')