Jasmine:在另一个类中测试静态函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jasmine:在另一个类中测试静态函数相关的知识,希望对你有一定的参考价值。

假设我有一个静态类和一个普通类,如下所示。

class StaticClass {
  static staticFunction() { 
    console.log('Static function called.');
  }
}

class NormalClass {
  normalFunction() { 
    StaticCLass.staticFunction();
  }
}

当调用normalFunction()时,如何测试静态函数?

答案

您可以设置一个简单的间谍(正如您已经从问题中的标记中猜到的),如下所示:

it('should test if the static function is being called ', () => {
  // Set up the spy on the static function in the StaticClass
  let spy = spyOn(StaticClass, 'staticFunction').and.callThrough();
  expect(spy).not.toHaveBeenCalled();

  // Trigger your function call
  component.normalFunction();

  // Verify the staticFunction has been called
  expect(spy).toHaveBeenCalled();
  expect(spy).toHaveBeenCalledTimes(1);
});

Here是一个stackblitz,它已经实现并通过了上述测试。

以上是关于Jasmine:在另一个类中测试静态函数的主要内容,如果未能解决你的问题,请参考以下文章

在另一个类中使用一个类的静态对象

C#常用代码片段备忘

我们如何为嵌套函数编写单元测试用例(Jasmine)?

在另一个类中做数据成员的对象,可以先不初始化

OCUnit 测试在未测试的类中给出错误

在另一个类c ++中调用成员函数