この解答例はChatGPTによって生成されています,正しいかは自己判断で。

BFE.devでのAI解答例 - JavaScript コーディング問題
38. `jest.spyOn()`を実装する

function spyOn(obj, methodName) {
  const originalMethod = obj[methodName];
  const calls = [];

  obj[methodName] = function (...args) {
    calls.push(args);
    return originalMethod.apply(this, args);
  };

  return {
    calls,
  };
}

説明:

  1. originalMethodは、指定されたオブジェクト(obj)の指定されたメソッド(methodName)の元の実装を保持するための変数です。
  2. callsは、spyOnから返されるオブジェクトで、メソッドが呼び出されたときに保存される引数の配列を保持します。
  3. 次に、obj[methodName]をラップする新しい関数を作成し、その関数で引数をcallsに追加し、元のメソッドを呼び出します。これにより、Spyの2つの必須機能が実装されます。
  4. 最後に、callsオブジェクトを返します。