如何为 Jasmine 间谍的多个调用提供不同的返回值
假设我在监视这样的方法:
Say I'm spying on a method like this:
spyOn(util, "foo").andReturn(true);
被测函数多次调用util.foo
.
是否可以让间谍在第一次调用时返回 true
,但第二次返回 false
?还是有其他方法可以解决这个问题?
Is it possible to have the spy return true
the first time it's called, but return false
the second time? Or is there a different way to go about this?
推荐答案
你可以使用spy.and.returnValues(如 Jasmine 2.4).
You can use spy.and.returnValues (as 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不会警告你.
There is some thing you must be careful about, there is another function will similar spell returnValue
without s
, if you use that, jasmine will not warn you.
相关文章