1. ホーム
  2. javascript

[解決済み] Jasmineのスパイで複数の呼び出しに対して異なる戻り値を持たせる方法

2022-09-03 16:58:35

質問

このようなメソッドをスパイしているとします。

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 を使わずに s を使用した場合、jasmineは警告を出しません。