testdouble
Version:
A minimal test double library for TDD with JavaScript
20 lines (16 loc) • 581 B
JavaScript
import _ from './wrap/lodash'
import tdFunction from './function'
import imitate from './imitate'
export default (typeOrNames) =>
_.isFunction(typeOrNames)
? imitate(typeOrNames)
: fakeConstructorFromNames(typeOrNames)
const fakeConstructorFromNames = (funcNames) => {
return _.tap(tdFunction('(unnamed constructor)'), (fakeConstructor) => {
fakeConstructor.prototype.toString = () =>
'[test double instance of constructor]'
_.each(funcNames, (funcName) => {
fakeConstructor.prototype[funcName] = tdFunction(`#${String(funcName)}`)
})
})
}