Jasmine calls.length和callCount未定义

 楼_市早班车_954 发布于 2023-02-06 08:13

我正在尝试使用Jasmine测试我的chrome扩展,但是我无法获得calls.length并按callCount预期行事.这两种情况下返回undefined.

我已经包含了代码和规范的示例.如果有帮助的话,这是代码的其余部分:https://github.com/DruRly/kamikaze/tree/closeIdleTab

如何重现:

git clone https://github.com/DruRly/kamikaze/tree/closeIdleTab

cd kamikaze

open SpecRunner.html

投机/ kamikazeSpec.js

describe("kamikaze", function() {
  describe("closeIdleTabs", function(){
    it("calls closeIdleTab for each tab received", function(){
      spyOn(kamikaze, 'closeIdleTab');

      kamikaze.closeIdleTabs([1,2,3]);
      expect(kamikaze.closeIdleTab.calls.length).toBe(3);
    })
  })
})

SRC/kamikaze.js

kamikaze = {
  ...

  closeIdleTabs: function(tabs){
    tabs.forEach(function(tab){
      test.closeIdleTab(tab);
    })
  },

  closeIdleTab: function(tab){
    if(tabTimeStamps[tab.id]){
      var secondsSinceUpdated = getSecondsSinceUpdated(tab.id)
      if(secondsSinceUpdated > (minutesUntilIdle * 60)){
        chrome.tabs.remove(tab.id)
      }
    }
  },

  ...
}

gkalpak.. 54

Jasmine API在2.x版"系列"中有所改变.
根据最新的文档,您应该使用该count()方法:

expect(kamikaze.closeIdleTab.calls.count()).toBe(3);

我也尝试使用您的代码,所有测试都成功通过.

2 个回答
  • Jasmine API在2.x版"系列"中有所改变.
    根据最新的文档,您应该使用该count()方法:

    expect(kamikaze.closeIdleTab.calls.count()).toBe(3);
    

    我也尝试使用您的代码,所有测试都成功通过.

    2023-02-06 08:21 回答
  • 备用语法(失败时输出更好)

    expect(kamikaze.closeIdleTab).toHaveBeenCalledTimes(3);
    

    2023-02-06 08:24 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有