单元测试 – 在karma中运行的角度测试中超时如何工作

前端之家收集整理的这篇文章主要介绍了单元测试 – 在karma中运行的角度测试中超时如何工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我喜欢使用控制台日志反馈可能太多,有时我运行代码,作为惯例我们已经添加$ timeout在指令/服务/控制器,有时长达500毫秒,现在的问题是在单元测试,我注意到只有console.logs直接在它的构造函数被发送到karma并输出到屏幕。

包裹的控制台日志在超时或更换包裹断言在$超时不产生任何结果,如果被忽略,什么是超时的解决方案?

在你的单元测试中,你加载ngMock,它用它的模拟覆盖原始的$ timeout。 Mock $ timeout不像真正的JavaScript超时那样工作。要让它调用它里面的代码,你必须做$ timeout.flush()从你的单元测试。

如果$ timeout工作类似真正的超时,你必须为所有使用$ timeout的函数编写异步单元测试。

这里有一个使用$ timeout和我如何测试它的简化函数的例子:

gaApi.getReport = function() {
  report = $q.defer()

  $timeout(function() {
    $http({method: 'GET',url: 'https://www.googleapis.com/analytics/v3/data/ga'})
      .success(function(body) {
        report.resolve(body)
      })
  },300)

  return report.promise
}

单元测试:

describe('getReport',function() {
  it('should return report data from Google Analytics',function() {
    gaApi.getReport().then(function(body) {
      expect(body.kind).toBe('analytics#gaData')
    })

    $timeout.flush()
    $httpBackend.flush()
  })
})
原文链接:https://www.f2er.com/angularjs/145433.html

猜你在找的Angularjs相关文章