38. `jest.spyOn()`を実装する

簡単  - accepted / - tried

ユニットテストを書いたことある方なら、Spyについては詳しいでしょう。

jest.spyOn()のように、spyOn(object, methodName)を実装してください。

下記の仕様を満たしてほしい

  1. spyが呼ばれるときに、元のメソッドも呼ばれる
  2. spyにcalls配列あり、実行されるたびに引数がcallsに保存される

コードを見ればわかるはず

const obj = {
   data: 1, 
   increment(num) {
      this.data += num
   }
}

const spy = spyOn(obj, 'increment')

obj.increment(1)

console.log(obj.data) // 2

obj.increment(2)

console.log(obj.data) // 4

console.log(spy.calls)
// [ [1], [2] ]

時間と空間複雑性はどう?

(2)
(78)