.callCount
是spy
的屬性。
function MyCtorFn() {
this.myMethod = function() {
console.log("hello world")
}
}
//arrange
var myCtrFn = new MyCtorFn();
var spy = spyOn(myCtrFn, 'myMethod');
//act
myCtrFn.myMethod();
spy.callCount; // 1
其實,這是非常奇怪的是,這是行不通的,因爲spyOn
方法應替換爲間諜的原始方法。
請參閱https://github.com/pivotal/jasmine/blob/master/lib/jasmine-core/jasmine.js
行582
。
我個人認爲這是很奇怪的行爲。這會導致與其他框架的各種不兼容。如果你有兩個茉莉花實例,他們都試圖窺探同一個功能呢?很奇怪。
這就是爲什麼我認爲屬性只是間諜。
間諜的整個觀點就是你無法檢測到嗎?
var trustedFunction = function() {};
var obj = {
foo: trustedFunction
}
spyOn(obj, "foo");
obj.foo === trustedFunction; // false? BUSTED
也許間諜是不正確的類比。一個CallTrackerWrapper
將是一個不太邪惡和更謙虛的名字。
啊,好的,謝謝你清理我的誤解。 – Ben
另外,我想你可以使用'myCtrFn.myMethod.calls.count()'http://jasmine.github.io/2.0/introduction.html#section-23 – Tibos
@Ben:顯然它不只是你,除非你寫了[這個cheatsheet](http://tobyho.com/2011/12/15/jasmine-spy-cheatsheet/),它清楚地顯示了'callCount'是你認爲它會是的地方。 –