[英]How to have different return values for multiple calls on a Jasmine spy
[英]How to have different fake functions called for multiple calls on a Jasmine spy
說我正在監視這樣的方法:
spyOn(util, "foo").andCallFake(function() {
//some code
});
被測函數多次調用util.foo。
間諜可能為每個下一次調用調用不同的偽函數嗎?
問題類似於此問題: 如何對Jasmine間諜進行多次調用具有不同的返回值,但我需要調用一個函數而不是返回值。 如果沒有本機的方法,如何“重置”間諜以解決問題?
為什么不圍繞它包裝一個匿名函數:
var count=0;
event.on(function(){
count++;
if(count==1){
//at first
firstfunc();
}else{
//the rest
secondfunc();
}
});
這是將間諜用於較早地偽造方法之后,將間諜路由到第二次/以后進行實際調用的方法。
我覺得這說明了您一直在努力實現的目標。 擺弄看看它在行動
var util = {
foo: function() {
console.log("Foo has been called")
}
}
someFunction = function() {
console.log("lets call utils foo");
util.foo();
console.log("lets call utils foo one more time");
util.foo();
console.log("lets call utils foo one last time");
util.foo();
}
describe("spec to util's foo multiple times", function() {
it('test', function() {
var self = this;
self.resetSpy = function() {
self.spyVar.and.callThrough();
};
self.spyVar = spyOn(util, 'foo').and.callFake(function(e) {
console.log("Foo hasn't been called, instead a Fake method has been called")
self.resetSpy();
});
someFunction();
expect(util.foo).toHaveBeenCalled();
});
});
筆記:
someFunction
是一個會調用util.foo
三次的函數。 callThrough
self.resetSpy
是我在第一個間諜調用之后調用的規范上的內部函數。 希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.