Jasmine .calls.count and .calls.any throwing error

Jasmine .calls.count and .calls.any throwing error

本文关键字:calls throwing error any and count Jasmine      更新时间:2023-09-26

我正在尝试测试.calls.count().calls.any,我尝试了来自此链接的以下代码Jasmine测试用例

describe("A spy", function() {
  var foo, bar = null;
  beforeEach(function() {
    foo = {
      setBar: function(value) {
        bar = value;
      }
    };
    spyOn(foo, 'setBar');
  });
  it("tracks if it was called at all", function() {
    expect(foo.setBar.calls.any()).toEqual(false);
    foo.setBar();
    expect(foo.setBar.calls.any()).toEqual(true);
  });
  it("tracks the number of times it was called", function() {
    expect(foo.setBar.calls.count()).toEqual(0);
    foo.setBar();
    foo.setBar();
    expect(foo.setBar.calls.count()).toEqual(2);
  });
});

但这抛出错误说:

TypeError:"foo.setBar.calls.any"不是函数

TypeError:"foo.setBar.calls.count"不是函数

我检查了语法,在网上到处都是一样的。怎么了?

这个问题有点傻,但你确定你没有意外使用Jasmine 1.3吗?calls也是一个有效的属性,但它还没有any()count()方法,您在2.0文档中引用了这些方法。

(在从1.3迁移到2.0的过程中,我遇到了很多类似的错误,因为语法非常相似,所以错误不会一目了然。)

我遇到了类似的问题,然后查找了这个。上面的答案是正确的,我通过在testem.json中明确地引用"jasmine2"而不仅仅是"jasmine"来修复它:

{
   "framework": "jasmine2",
   "src_files": [
      "filePath1.js",
      "filePath2.js",
      "filePathEtc.js"
   ]
}