web-dev-qa-db-ja.com

createspyとcreatespyobjの違いは何ですか

私のようなコードで使用しました。

return $provide.decorator('aservice', function($delegate) {
            $delegate.addFn = jasmine.createSpy().andReturn(true);
            return $delegate;
        });

その中でcreateSpyは何をしますか? createSpy呼び出しをcreatespyobj呼び出しに変更できますか。

CreateSpyを使用すると、1つの関数/メソッドモックを作成できます。 Createspyobjは、複数の機能モックを実行できます。私は正しいですか?

違いは何でしょうか。

39
user3686652

jasmine.createSpyは、スパイする機能がない場合に使用できます。 spyOnのような呼び出しと引数を追跡しますが、実装はありません。

jasmine.createSpyObjは、1つ以上のメソッドをスパイするモックを作成するために使用されます。スパイである各文字列のプロパティを持つオブジェクトを返します。

モックを作成する場合は、jasmine.createSpyObjを使用する必要があります。以下の例をご覧ください。

Jasmineドキュメントから http://jasmine.github.io/2.0/introduction.html ...

createSpy:

describe("A spy, when created manually", function() {
  var whatAmI;

  beforeEach(function() {
    whatAmI = jasmine.createSpy('whatAmI');

    whatAmI("I", "am", "a", "spy");
  });

  it("is named, which helps in error reporting", function() {
    expect(whatAmI.and.identity()).toEqual('whatAmI');
  });

  it("tracks that the spy was called", function() {
    expect(whatAmI).toHaveBeenCalled();
  });

  it("tracks its number of calls", function() {
    expect(whatAmI.calls.count()).toEqual(1);
  });

  it("tracks all the arguments of its calls", function() {
    expect(whatAmI).toHaveBeenCalledWith("I", "am", "a", "spy");
  });

  it("allows access to the most recent call", function() {
    expect(whatAmI.calls.mostRecent().args[0]).toEqual("I");
  });
});

createSpyObj:

describe("Multiple spies, when created manually", function() {
  var tape;

  beforeEach(function() {
    tape = jasmine.createSpyObj('tape', ['play', 'pause', 'stop', 'rewind']);

    tape.play();
    tape.pause();
    tape.rewind(0);
  });

  it("creates spies for each requested function", function() {
    expect(tape.play).toBeDefined();
    expect(tape.pause).toBeDefined();
    expect(tape.stop).toBeDefined();
    expect(tape.rewind).toBeDefined();
  });

  it("tracks that the spies were called", function() {
    expect(tape.play).toHaveBeenCalled();
    expect(tape.pause).toHaveBeenCalled();
    expect(tape.rewind).toHaveBeenCalled();
    expect(tape.stop).not.toHaveBeenCalled();
  });

  it("tracks all the arguments of its calls", function() {
    expect(tape.rewind).toHaveBeenCalledWith(0);
  });
});
77
j_buckley