jest-plugin-fs

Jest plugin for mocking out the filesystem.

Usage no npm install needed!

<script type="module">
  import jestPluginFs from 'https://cdn.skypack.dev/jest-plugin-fs';
</script>

README

jest-plugin-fs

npm npm npm

Jest plugin for mocking out the filesystem.

Getting Started

Install jest-plugin-fs using yarn:

yarn add --dev jest-plugin-fs

Motivation

Jest currently does not have an easy way to mock out the filesystem. This plugin aims to change that. Here's an example:

import fs from 'jest-plugin-fs';

// Mock out the filesystem.
jest.mock('fs', () => require('jest-plugin-fs/mock'));

describe('FileWriter', () => {
  // Create an in-memory filesystem.
  beforeEach(() => fs.mock());
  afterEach(() => fs.restore());

  describe('.write', () => {
    set('filename', () => 'path/to/my/file');
    action('write', () => FileWriter.write(filename));

    it('should write a new file', () => {
      expect(write).not.toThrow();
    });

    describe('resulting file', () => {
      beforeEach(() => write());

      it('should create the new file', () => {
        expect(fs.readFileSync(filename)).toEqual('new-file');
      });
    });
  });
});

Usage

If you want, you can import fs from jest-plugin-fs at the top of every test:

import fs from 'jest-plugin-fs';

// This installs the mock for 'fs'.
jest.mock('fs', () => require('jest-plugin-fs/mock'));

If you want to install fs attached to the global jest object, you can modify the jest section of your package.json to include:

"jest": {
  "setupFiles": [
    "jest-plugin-fs/setup"
  ]
}

Example

Here's an example test that tests fs itself:

// TODO