Node.jsモジュールのユニットテスト方法とグローバルオブジェクトのモック化


  1. モジュールのスタブ化: 他のモジュールの動作をシミュレートするために、スタブを使用することができます。スタブは、モジュールの代替実装であり、テスト中にそのモジュールの関数やメソッドの振る舞いを制御します。以下は、moduleAmoduleBという2つのモジュールを要求するモジュールのテストの例です。
  1. モジュールのモック化: モジュールのモック化は、モジュールの実際の動作を再現するために使用されます。モック化されたモジュールは、テスト中にモジュールの関数やメソッドを監視し、呼び出しや戻り値を追跡します。以下は、moduleCというモジュールを要求するモジュールのテストの例です。
// モジュールのモック化
jest.mock('./moduleC');
// テストケース
test('テストケース', () => {
  // モック化された関数の振る舞いを設定
  moduleC.someFunction.mockReturnValue('mocked value');
  // テスト対象のモジュールを呼び出し
  const result = require('./myModule')();
  // 結果のアサーション
  expect(result).toBe('expected value');
});
  1. グローバルオブジェクトのモック化: グローバルオブジェクトをモック化するには、以下の手順に従います。
// グローバルオブジェクトのモック化
const originalConsoleLog = console.log;
console.log = jest.fn();
// テストケース
test('テストケース', () => {
  // テスト対象のコードを実行
  myFunction();
  // グローバルオブジェクトのモック化されたメソッドの呼び出しをアサート
  expect(console.log).toHaveBeenCalledWith('expected value');
});
// テスト終了時にグローバルオブジェクトを元に戻す
afterAll(() => {
  console.log = originalConsoleLog;
});

これらの方法を使用することで、他のモジュールの依存関係やグローバルオブジェクトをモック化しながら、Node.jsモジュールのユニットテストを効果的に行うことができます。これにより、モジュールの独立性を保ちつつ、テストの信頼性と保守性を向上させることができます。