默认间谍策略

Jasmine 通过创建一个间谍时,可以自定义它所用的默认间谍策略。通常,默认策略是 .and.stub(),当调用间谍时,它将返回 undefined。若想更改此选项,请在 beforeEach()beforeAll() 模块中使用 jasmine.setDefaultSpyStrategy 助手。

beforeEach(function() {
  jasmine.setDefaultSpyStrategy(and => and.returnValue("Hello World"));
});

it("returns the value Hello World", function() {
  const spy = jasmine.createSpy();
  expect(spy()).toEqual("Hello World");
});

若不带参数调用 jasmine.setDefaultSpyStrategy,则可移除自定义默认项。如果你希望为一系列间谍临时创建间谍策略,这会很管用。

it("throws if you call any methods", function() {
  jasmine.setDefaultSpyStrategy(and => and.throwError(new Error("Do Not Call Me")));
  const program = jasmine.createSpyObj(["start", "stop", "examine"]);
  jasmine.setDefaultSpyStrategy();

  expect(() => {
    program.start();
  }).toThrowError("Do Not Call Me");
});