【问题标题】:How to test callback function with Jasmine如何用 Jasmine 测试回调函数
【发布时间】:2018-11-15 08:16:57
【问题描述】:

给定回调函数如下:

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

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

谢谢

【问题讨论】:

  • @FelixKling 我不明白,根据这个链接的内容,我怎么能做到这一点?能否提供一段代码?
  • 类似it("takes a long time", function(done) { myfunction('some value', function(){ /*do something */ done();}); });
  • @FelixKling 但是这样做,我必须重写我的回调函数,对吧?
  • 当然。我假设myfunction 调用在您的测试中。

标签: javascript callback jasmine istanbul


【解决方案1】:

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

  1. 测试myFunction
  2. 回调测试

所以它可能看起来像这样:

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 个测试,因为您可能需要通过每个函数测试不同的路径。

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

【讨论】:

    猜你喜欢
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    • 2018-01-16
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    相关资源
    最近更新 更多