unwire
Version:
Dependency injection with 'require()'
39 lines • 1.39 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ava_1 = __importDefault(require("ava"));
const test = ava_1.default;
const { mock, replace, flush } = require('./index');
const MOCK_FS = () => ({
readFileSync: () => 'some content'
});
test('should fail by default', t => {
flush('./testHelpers/main');
const main = require('./testHelpers/main');
// By default, main() should throw an error
t.throws(main, /no such file or directory/);
});
test('should mock fs in ./testHelpers/main', t => {
// Mock readfile
// https://www.npmjs.org/package/rewire => details on how to use rewire
mock('fs', MOCK_FS);
// Load main
// note that it now uses the rewired version of readFile
flush('./testHelpers/main');
const main = require('./testHelpers/main');
t.is(main(), 'some content');
});
test('should mock everytime', t => {
const a = mock('fs', MOCK_FS);
const b = mock('fs', MOCK_FS);
t.not(a, b);
});
test('should replace a files contents', t => {
const value = { container: 'container' };
replace('./testHelpers/empty', value);
t.is(require('./testHelpers/empty'), value);
flush('./testHelpers/empty');
});
//# sourceMappingURL=index.spec.js.map