Jest matcher to write snapshots to a separate file instead of the default snapshot file used by Jest. Writing a snapshot to a separate file means you have proper syntax highlighting in the output file, and better readability without those pesky escape characters. It's also useful if you have binary content.
npm install --save-dev jest-file-snapshot
or
yarn add --dev jest-file-snapshot
Extend Jest's expect
:
import { toMatchFile } from 'jest-file-snapshot';
expect.extend({ toMatchFile });
Then use it in your tests:
it('matches content of file on disk', () => {
expect(content).toMatchFile();
});
The content passed can be of type string
or a Buffer
. The comparison be done using Buffer.equals()
instead of ===
if a Buffer
is passed.
The matcher takes two optional arguments:
filepath
: path to the file whose content should be matched, e.g.expect(content).toMatchFile(path.join(__dirname, 'output.md'))
options
: additional options object for the matcher, with following properties:diff
: options forjest-diff
fileExtension
: optional file extension to use for the snapshot file.
You should also exclude the output files from Jest's watcher so that updating the snapshot doesn't re-run the tests again.
For example, by default toMatchFile
uses a folder named __file_snapshots__
which you can exclude by adding the following under the jest
key in package.json
:
"watchPathIgnorePatterns": [
"__file_snapshots__"
]
Make sure your code passes the unit tests, ESLint and TypeScript. Run the following to verify:
yarn test
yarn lint
yarn typescript
To fix formatting errors, run the following:
yarn lint -- --fix