【问题标题】:How can I test if a @output emit a value?如何测试 @output 是否发出值?
【发布时间】:2022-08-07 22:39:52
【问题描述】:

我有一个组件在调用函数时会发出一个值, 如何测试@output 是否发出值? 这是我的功能

@Output() emitDetail = new EventEmitter();

emitDetailFn() {
    this.emitDetail .emit(false);
}

这是我的测试

  it(\'Detailfn should be called\',()=>{

    let emitted: boolean;
    component.emitDetail .subscribe(value => {
      emitted = value
    })
    component.emitDetailFn();
    expect(emitted).toEqual(false)
})

但覆盖范围仍为红色

    标签: unit-testing jasmine karma-jasmine angular-test angular-testing-library


    【解决方案1】:

    在您的单元测试中,您调用函数emitDetailFn,但报告的代码覆盖率与函数emitDetailFnl 相关。

    不过,您的单元测试可以编写如下:

    it('should emit detail false',() => {
      spyOn(component.emitDetail, 'emit');
      component.emitDetailFn();
      expect(component.emitDetail.emit).toHaveBeenCalledWith(false);
    });
    

    有关详细信息,请参阅 Jasmine 文档here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-12
      • 1970-01-01
      • 2021-11-25
      • 2017-04-14
      相关资源
      最近更新 更多