如何对Jasmine间谍的多次调用具有不同的返回值
How to have different return values for multiple calls on a Jasmine spy
假设我正在监视这样的方法:
spyOn(util, "foo").andReturn(true);
被测函数多次调用util.foo
。
间谍第一次被调用时返回true
,但第二次返回false
,这可能吗?或者有其他方法可以解决这个问题吗?
您可以使用spy.and.returnValues(如Jasmine 2.4)。
例如
describe("A spy, when configured to fake a series of return values", function() {
beforeEach(function() {
spyOn(util, "foo").and.returnValues(true, false);
});
it("when called multiple times returns the requested values in order", function() {
expect(util.foo()).toBeTruthy();
expect(util.foo()).toBeFalsy();
expect(util.foo()).toBeUndefined();
});
});
然而,有些事情你必须小心。还有另一个拼写类似的函数:returnValue without s。如果你使用它,Jasmine不会警告你,但它的行为会有所不同。
对于Jasmine的旧版本,您可以对Jasmine 1.3使用spy.andCallFake
,对Jasmine2.0使用spy.and.callFake
,并且您必须通过简单的闭包或对象属性等来跟踪"已调用"状态。
var alreadyCalled = false;
spyOn(util, "foo").andCallFake(function() {
if (alreadyCalled) return false;
alreadyCalled = true;
return true;
});
相关文章:
- 如何记录调用另一个函数的函数的返回值
- 单击按钮时,使用Javascript调用并返回值
- 从JSP页面调用Java Script函数未返回值
- jQuery 延迟的 AJAX 调用返回值
- 未使用返回值时调用方法
- 如何在循环中调用Promise函数并保存其返回值
- AngularJS如何从异步调用返回值
- angularjs从html调用函数返回值
- jQuery deferred:用于延迟函数的返回,直到函数内的异步调用完成+获取返回值
- PHP调用脚本函数,返回值为Uncaught SyntaxError:意外的令牌ILLEGAL
- 如何使用Ajax内部调用JQuery在函数中获取返回值
- 为什么当我调用具有返回值的函数时,我的 onclick 事件不起作用
- 从函数从 JavaScript 调用 servlet 的 Ajax 不返回值
- 带有 AJAX 调用的 Javascript 函数 - 在响应后返回值
- 将一个函数作为参数传递给另一个函数,每次调用函数时检查返回值
- 从 PHP 获取 AJAX 调用的返回值
- 如何在 c# 代码隐藏中调用具有返回值的 Javascript 函数
- Javascript 函数返回 value.根据第一个函数返回值调用另一个函数
- 基于JSF中动作控制器方法的返回值调用javascript
- 基于控制器返回值调用javascript方法