1234567891011121314151617181920212223242526272829303132333435 |
- 'use strict'
- module.exports = function stubs(obj, method, cfg, stub) {
- if (!obj || !method || !obj[method])
- throw new Error('You must provide an object and a key for an existing method')
- if (!stub) {
- stub = cfg
- cfg = {}
- }
- stub = stub || function() {}
- cfg.callthrough = cfg.callthrough || false
- cfg.calls = cfg.calls || 0
- var norevert = cfg.calls === 0
- var cached = obj[method].bind(obj)
- obj[method] = function() {
- var args = [].slice.call(arguments)
- var returnVal
- if (cfg.callthrough)
- returnVal = cached.apply(obj, args)
- returnVal = stub.apply(obj, args) || returnVal
- if (!norevert && --cfg.calls === 0)
- obj[method] = cached
- return returnVal
- }
- }
|