回答:
(Jasmine 2.4として)spy.and.returnValuesを使用できます。
例えば
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
。2つの関数は明らかに異なりますが、複数の引数を渡し.returnValue
てもエラーは発生しません。その1人のキャラクターのためにどれだけの時間を無駄にしたかを認めたくありません。