2017-07-13 26 views
6

spyOnなぜjasmine.createSpyの代わりにspyOnを使用するのですか?

そして

jasmine.createSpy( 'のsomeMethod')

の違いは何ですか(SomeObjectのは、 'のsomeMethod')

そして、なぜSpyOnの使用を選択する必要がありますか?

私の推測では、最初の選択肢はsomeMethodというメソッドに一致しますが、someObjectに含まれている場合にのみspyOnが一致します。したがって、createSpyをより一般的なマッチャーにすることはできますか?

const o = {}; 
o.some = jasmine.createSpy('some'); 

spyOnの利点があることである:

+0

ねえ、[私の答え](https://stackoverflow.com/a/45074442/2545680)助けてくれましたか? –

答えて

11

違いは、モックメソッドがcreateSpy()であなたのために作成されているときにspyOn

const o = { some(): { console.log('spied') } }; 
spyOn(o, 'some'); 

でオブジェクトのメソッドを持つべきであるということです元の方法を呼び出すことができます:

spyOn(o, 'some').and.callThrough(); 
o.some(); // logs 'spied' 

そして、@estusは、spyOnの場合、テストの後に元のメソッドが復元されたと言っています。これは、再割り当て時に手動で行う必要があります。他の罰金の答えにさらに

+1

さらに重要なことに、 'spyOn'の場合、テストの後に元のメソッドが復元されます。これは 'o.some ='で再割り当てされたときに手動で行うべきです。 – estus

+0

@estus、追加ありがとう) –

1

  • 使用spyOn()(切片)、それに他のモジュールの呼び出しを追跡するためのオブジェクトの既存のメソッドをスパイします。
  • jasmine.createSpy()を使用して、コールバックとして渡すことができる関数、またはPromiseハンドラをコールバックを追跡するために作成します。
関連する問題