如何使用Jasmine测试回调函数

时间:2018-06-05 18:42:45

标签: javascript callback jasmine istanbul

给定回调函数如下:

myfunction('some value', function(){
    //do something...
})

如何使用Jasmine覆盖并测试它?它永远不会进入function(){...回调中的流程。

由于

1 个答案:

答案 0 :(得分:0)

在这种情况下,您需要创建(至少)两个单元测试:

  1. myFunction
  2. 的测试
  3. 回调测试
  4. 所以它可能看起来像这样:

    it('should test myFunction', () => {
      let spy = jasmine.createSpy();
      let result = myFunction(spy);
      expect(spy).toHaveBeenCalledWith(...args);
      expect(result).toBeCorrectOrSomething();
    });
    
    it('should test the callback', () => {
      let callback = createCallback();
      let result = callback(...args);
      expect(result).toBeCorrectOrSomething();
    });
    

    请注意,我说至少 2次测试,因为您可能需要测试每个函数的不同路径。

    另请注意,这要求您能够在测试中访问回调,因此需要从正在创建的模块中公开回调。