I've been using this method to test file-system functions as an alternative to mock-fs due to its lack of symlink support. I'd love to hear what others think and the possible dangers, pitfalls, or improvements.var CWD = process.cwd()var assert = require('assert')var path = require('path')var os = require('os')var Promise = require('bluebird')var fs = Promise.promisifyAll(require('fs-extra'))// note this is a custom verison of fs-extra :(// [[fileName, contents], expectation]var files = [  ['hello.js', ''],  ['folder/file-require-local.js', 'var local = require(\'../file-require-sibling.js\')'],  ['file-require-sibling.js', 'var local = require(\'./file-require-underscore.js\')'],  ['file-require-underscore.js', 'var underscore = require(\'underscore\')'],  ['file-import-underscore.js', 'import underscore from \'underscore\''],  ['file-require-path.js', 'var path = require(\'path\')'],  ['file-require-local.js', 'var hello = require(\'./hello.js\')'],  ['file-import-local.js', 'import hello from \'./hello.js\''],  ['file-require-json.js', 'var pkg = require(\'./package.json\')'],  ['file-multi-file.js', (function () {    var file = []    file.push('var underscore = require(\'underscore\')')    file.push('var path = require(\'path\')')    file.push('var hello = require(\'./hello.js\')')    return file.join('\n')  }())]]/* global describe, before, after, beforeEach, afterEach, it */var ROOT_DESC = 'recursive-deps'var TEST_DIR = path.join(os.tmpdir(), ROOT_DESC)describe(ROOT_DESC, function () {  before(function () {    fs.emptyDirSync(TEST_DIR)    process.chdir(TEST_DIR)  })  beforeEach(function () {    return Promise.map(files, function (file) {      return fs.ensureFileAsync.apply(null, file)    })  })  afterEach(function () {    fs.emptyDirSync(TEST_DIR)  })  after(function () {    process.chdir(CWD)    fs.removeSync(TEST_DIR)  })  it('should have mock file system', function () {    var dir = fs.readdirSync(TEST_DIR)    var expected = [      'file-import-local.js',      'file-import-underscore.js',      'file-multi-file.js',      'file-require-json.js',      'file-require-local.js',      'file-require-path.js',      'file-require-sibling.js',      'file-require-underscore.js',      'folder',      'hello.js'    ]    assert.equal(process.cwd().indexOf(TEST_DIR) > -1, true)    assert.deepEqual(dir, expected)  })})
Mocking the file system within a test
javascript;unit testing;node.js