0.5.1 • Published 10 years ago
sinon-doublist-fs v0.5.1
sinon-doublist-fs
node.js fs mixins for sinon-doublist: stubFile(), stubTree()
Examples
All
sinonsandboxes except fake timers will be created by the both mixin approaches below. (sinon docs)
Mixin with auto-sandboxing (recommended)
sinonDoublist(sinon, 'mocha');
sinonDoublistFs('mocha');
describe('myFunction', function() {
it('should do something', function() {
// this.stubFile()
// this.stubTree()
});
});Mixin w/ manual sandboxing
describe('myFunction', function() {
beforeEach(function() {
sinonDoublist(sinon, this);
sinonDoublistFs(this);
});
afterEach(function() {
this.sandbox.restore();
});
it('should do something', function() {
// this.spyFile()
// this.stubTree()
});
});Fake a large file
describe('#validate()', function() {
it('should detect file that is too large', function() {
var filename = '/path/to/file';
this.stubFile(filename).stat('size', 1024 * 1024 * 1024).make();
var myLib = new MyLib(filename);
myLib.validate().should.equal(false);
});
});Fake a file tree with leaf attributes
/**
* /root/a
* /root/a/b
* /root/a/b2
* /root/a2
* /root/a3
* /root/a3/b4
* /root/a3/b4/c
*/
this.stubFile('/root').readdir([
this.stubFile('/root/a').readdir([
this.stubFile('/root/a/b').size(100),
this.stubFile('/root/a/b2').size(50)
]),
this.stubFile('/root/a2').size(10),
this.stubFile('/root/a3').readdir([
this.stubFile('/root/a3/b4').readdir([
this.stubFile('/root/a3/b4/c').size(20)
])
])
]).make();Fake a file tree from a sparse path list
Creates the same hierarchy as the
stubFile()example above. However, ancestor directories are stubbed automatically.
this.stubTree([
'/root/a/b2',
'/root/a2',
'/root/a3/b4/c'
]);fs coverage
File stubs created by stubFile() / stubTree(), and configured via .stat() and others, will be reflected/modifiable by:
fs.writeFile*fs.readFile*- Writes can also be faked via FileStub#buffer().
fs.exists*fs.readdir*fs.stat* / fs.lstat*- Including
isFile() / isDirectory()responses
- Including
fs.unlink*fs.renameSync
If a file stub does not exist for a given path, we fallback to the real fs method. To override this behavior:
sinonDoublistFs.realFsFallback = 0- Do nothing (async methods will hang).
sinonDoublistFs.realFsFallback = 2- Throw an
Error, ex.existsSync, no such file stub '/path/to/file'
- Throw an
co-fs compatibility
co-fs wrappers just need to be added after sinon-doublist-fs stubbing. See test/lib/co-fs.js.
Installation
NPM
npm install sinon-doublist-fsAPI
License
MIT
Tests
npm test