我正在尝试测试.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"
]
}