Proxyquire
Proxies nodejs require in order to allow overriding dependencies
...Advanced options can simulate missing modules, reload modules, and override dependencies during initialization or runtime. Proxyquire is especially useful for focused unit tests of CommonJS modules with tightly coupled dependencies.