Answers:
您可以使用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
没有s
,如果你使用,茉莉不会报警。
对于较旧版本的Jasmine,您可以将其spy.andCallFake
用于Jasmine 1.3或spy.and.callFake
Jasmine 2.0,并且必须通过简单的闭包或对象属性等来跟踪“被调用”状态。
var alreadyCalled = false;
spyOn(util, "foo").andCallFake(function() {
if (alreadyCalled) return false;
alreadyCalled = true;
return true;
});
.returnValues
这两个函数显然是不同的,但是将多个参数传递给.returnValue
不会引发错误。我不想承认我因为那个角色而浪费了多少时间。