加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 08:32:02 所属栏目:安全 来源:网络整理
导读:我喜欢使用控制台日志反馈可能太多,有时我运行代码,作为惯例我们已经添加$ timeout在指令/服务/控制器,有时长达500毫秒,现在的问题是在单元测试,我注意到只有console.logs直接在它的构造函数被发送到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()
  })
})

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读