概要
expect(mySpy).toHaveBeenCalled()
を使用することでスパイ関数が実行されたかを確認できる。
また、 expect(mySpy).toHaveBeenCalledWith(args)
でスパイ関数実行時に渡された引数の確認もできる。
スパイ関数に戻り値が必要な場合、spyOn().and.returnValue
で設定する。
実行環境
- Node.js - 10.9.x
使用ライブラリ
- Jamine - 3.3.x
サンプルソース
toHaveBeenCalled
describe('test', () => { it('toHaveBeenCalled', () => { // setup const func = { hoge: () => {} }; spyOn(func, 'hoge'); // exercise func.hoge(); // verify expect(func.hoge).toHaveBeenCalled(); }); });
toHaveBeenCalledWith
describe('test', () => { it('toHaveBeenCalledWith', () => { // setup const func = { hoge: (num: number) => {} }; spyOn(func, 'hoge'); // exercise func.hoge(1); // verify expect(func.hoge).toHaveBeenCalledWith(1); }); });
スパイ関数に戻り値が必要な場合(jasmine.createSpy().and.returnValue)
describe('test', () => { it('toHaveBeenCalledWith', () => { // setup const func = { hoge: () => 1 }; spyOn(func, 'hoge').and.returnValue(2); // exercise const actual = func.hoge(); // verify expect(actual).toBe(2); }); });
スパイ関数の生成の仕方
// spyOn spy = spyOn(obj, 'hoge'); // createSpy obj.hoge = jasmine.createSpy();
使いどころ
- スパイ関数を使用することで、テスト対象のコードに集中してテストコードの実装ができます。
- スパイ関数の実行や引数の確認をすることで、DIされたオブジェクトなどのメソッドが実行されたかどうか確認が出来るので便利です。