【问题标题】:Unit test case to check if function is called单元测试用例检查函数是否被调用
【发布时间】:2020-11-24 06:38:39
【问题描述】:

我正在尝试编写一个单元测试用例来检查函数是否在 switch case 中被调用 我有以下功能

public onMessageReceived(event) {
    switch (event && event['event']) {
      case 'onOptionSelected':
        this.toggleNext();
        break;

      case 'temp':
        break;
    }
  }

并已尝试编写与以下相同的单元测试用例,但测试用例总是失败“预期 spy toggleNext 已被调用。”任何可能的问题将不胜感激。

 it('should call toggleNext on onOptionSelected event', () => {
    component.onMessageReceived({ event: 'OptionSelected' });
    fixture.detectChanges();
    fixture.whenStable().then(() => {
      expect(spyOn<any>(component, 'toggleNext')).toHaveBeenCalled();
    });
  });

【问题讨论】:

    标签: angular unit-testing jasmine tdd


    【解决方案1】:

    在调用函数之前先声明间谍

     it('should call toggleNext on onOptionSelected event', () => {
        const toggleSpy = spyOn(component, 'toggleNext');
        component.onMessageReceived({ event: 'onOptionSelected' });
        expect(toggleSpy).toHaveBeenCalled()
      });
    

    【讨论】:

    • 您是否检查以确保问题不是您的交换机中的onOptionSelected 而不是您发送的OptionSelected
    猜你喜欢
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    相关资源
    最近更新 更多