UNPKG

5.35 kBMarkdownView Raw
1# Mock FS
2
3A configurable mock file system. You know, for testing.
4
5## Example
6
7The code below creates a mock `fs` module that is configured to work with a few mock files and directories.
8
9```js
10var mock = require('mock-fs');
11
12var fs = mock.fs({
13 'path/to/fake/dir': {
14 'some-file.txt': 'file content here',
15 'empty-dir': {/** empty directory */}
16 },
17 'path/to/some.png': new Buffer([8, 6, 7, 5, 3, 0, 9]),
18 'some/other/path': {/** another empty directory */}
19});
20```
21
22If you are testing a module that `require`s the real `fs` module, you can use [`rewire`](https://npmjs.org/package/rewire) to inject a mock `fs` module for testing.
23
24```js
25var rewire = require("rewire");
26var moduleToTest = rewire('./path/to/module');
27
28// inject the mock fs created above
29moduleToTest.__set__('fs', fs);
30
31// now functions in moduleToTest will use
32// your mock fs instead of the real one
33```
34
35## Status
36
37The table below shows what is covered by the mock `fs`. Tests are currently run on Node 0.8 and 0.10. Eventually more versions will be supported.
38
39| function | status | notes |
40|------------------------|:------:|----------|
41| `fs.rename` | 100% | Complete |
42| `fs.renameSync` | 100% | Complete |
43| `fs.ftruncate` | 100% | Complete |
44| `fs.ftruncateSync` | 100% | Complete |
45| `fs.truncate` | 100% | Complete |
46| `fs.truncateSync` | 100% | Complete |
47| `fs.chown` | 100% | Complete |
48| `fs.chownSync` | 100% | Complete |
49| `fs.fchown` | 100% | Complete |
50| `fs.fchownSync` | 100% | Complete |
51| `fs.lchown` | 100% | Complete |
52| `fs.lchownSync` | 100% | Complete |
53| `fs.chmod` | 100% | Complete |
54| `fs.chmodSync` | 100% | Complete |
55| `fs.fchmod` | 100% | Complete |
56| `fs.fchmodSync` | 100% | Complete |
57| `fs.lchmod` | 100% | Complete |
58| `fs.lchmodSync` | 100% | Complete |
59| `fs.stat` | 90% | Provides a [stats object](#Stats) |
60| `fs.lstat` | 0% | Implement `binding.lstat` |
61| `fs.fstat` | 90% | Provides a [stats object](#Stats) |
62| `fs.statSync` | 90% | Provides a [stats object](#Stats) |
63| `fs.lstatSync` | 0% | Implement `binding.lstat` |
64| `fs.fstatSync` | 90% | Provides a [stats object](#Stats) |
65| `fs.link` | 0% | Implement `binding.link` |
66| `fs.linkSync` | 0% | Implement `binding.link` |
67| `fs.symlink` | 0% | Implement `binding.symlink` |
68| `fs.symlinkSync` | 0% | Implement `binding.symlink` |
69| `fs.readlink` | 0% | Implement `binding.readlink` |
70| `fs.readlinkSync` | 0% | Implement `binding.readlink` |
71| `fs.realpath` | 0% | Implement `binding.readlink` & `binding.lstat` |
72| `fs.realpathSync` | 0% | Implement `binding.readlink` & `binding.lstat` |
73| `fs.unlink` | 100% | Complete |
74| `fs.unlinkSync` | 100% | Complete |
75| `fs.rmdir` | 100% | Complete |
76| `fs.rmdirSync` | 100% | Complete |
77| `fs.mkdir` | 100% | Complete |
78| `fs.mkdirSync` | 100% | Complete |
79| `fs.readdir` | 100% | Complete |
80| `fs.readdirSync` | 100% | Complete |
81| `fs.close` | 100% | Complete |
82| `fs.closeSync` | 100% | Complete |
83| `fs.open` | 100% | Complete |
84| `fs.openSync` | 100% | Complete |
85| `fs.utimes` | 0% | Implement `binding.utimes` |
86| `fs.utimesSync` | 0% | Implement `binding.utimes` |
87| `fs.futimes` | 0% | Implement `binding.futimes` |
88| `fs.futimesSync` | 0% | Implement `binding.futimes` |
89| `fs.fsync` | 0% | Implement `binding.fsync` |
90| `fs.fsyncSync` | 0% | Implement `binding.fsync` |
91| `fs.write` | 100% | Complete |
92| `fs.writeSync` | 100% | Complete |
93| `fs.read` | 100% | Complete |
94| `fs.readSync` | 100% | Complete |
95| `fs.readFile` | 100% | Complete |
96| `fs.readFileSync` | 100% | Complete |
97| `fs.writeFile` | 100% | Complete |
98| `fs.writeFileSync` | 100% | Complete |
99| `fs.appendFile` | 100% | Complete |
100| `fs.appendFileSync` | 100% | Complete |
101| `fs.watchFile` | 0% | Implement `binding.StatWatcher` |
102| `fs.unwatchFile` | 0% | Implement `binding.StatWatcher` |
103| `fs.watch` | 0% | Implement `fs.FSWatcher` |
104| `fs.exists` | 100% | Complete |
105| `fs.existsSync` | 100% | Complete |
106| `fs.Stats` | 90% | <a name='Stats'></a>Incudes `mode`, `size`, `atime`, `ctime`, `mtime`, `uid`, `gid`, `isFile()`, and `isDirectory()` |
107| `fs.createReadStream` | 100% | Complete |
108| `fs.ReadStream` | 100% | Complete |
109| `fs.createWriteStream` | 100% | Complete |
110| `fs.WriteStream` | 100% | Complete |
111| `fs.FSWatcher` | 0% | Implement `fs.FSWatcher` |
112| `fs.fdatasync` | 0% | Implement `binding.fdatasync` |
113| `fs.fdatasyncSync` | 0% | Implement `binding.fdatasync` |
114
115[![Current Status](https://secure.travis-ci.org/tschaub/mock-fs.png?branch=master)](https://travis-ci.org/tschaub/mock-fs)