supasympa
5/26/2016 - 10:43 PM

Quick test spy function.

Quick test spy function.


;(function IIFE(global){

  function noop(){}
  
  return function iSpyCreator(prevs, id){
    prevs = prevs || {}
    id = id || Date.now().toString()
    prevs[id] = prevs[id] || {}
    
    return function iSpy(ject, fnName, fn){
      fn = fn || noop;
      
      prevs[id][fnName] = ject[fnName]
      ject[fnName] = function(){
        ject[fnName].callinfo.calls += 1
        ject[fnName].callinfo.arguments.push[arguments]
        
        return fn()
      }
      ject[fnName].callinfo = {}
      ject[fnName].callinfo.calls = 0
      ject[fnName].callinfo.arguments = []
      ject[fnName].restore = function(){
        ject[fnName] = prevs[id][fnName]
      }
    }
    
  }

  global.iSpy = iSpyCreator()

  global.iSpy.noop = noop
  
}(this))