UNPKG

jest-sandbox

Version:
101 lines (65 loc) 2.58 kB
# jest-sandbox Track jest spies and stubs easily. [![Build Status](https://travis-ci.org/JoinColony/jest-sandbox.svg?branch=master)](https://travis-ci.org/JoinColony/jest-sandbox) The one feature I really missed when switching from [sinon.js](http://sinonjs.org) to jest spies and mocks was _[sandboxes](http://sinonjs.org/releases/v2.1.0/sandbox/)_. They allow you to create as many spies and stubs as you want without having to track them all and clear them manually. ### Meet jest-sandbox: ```javascript import createSandbox from 'jest-sandbox'; import cow from './moo.js'; describe('A cow 🐄', () => { const sandbox = createSandbox(); // Create as many spies as you like const spyStomach = sandbox.fn(); const spyPoop = sandbox.spyOn(cow, 'poop'); // Clear 'em all with one call beforeEach(() => sandbox.clear()); test('Eats grass', () => { return cow.eatGrass.then(spyStomach).then(() => { expect(spyStomach).toHaveBeenCalledWith('🌱'); expect(spyPoop).toHaveBeenCalledTimes(0); }); }); test('Sometimes poops', () => { return cow.digest().then(() => { expect(spyStomach).toHaveBeenCalledTimes(0); expect(spyPoop).toHaveBeenCalledWith('💩'); }); }); }); ``` ### Install ```shell yarn add jest-sandbox -D ``` Some people prefer `npm`; ```shell npm i jest-sandbox -D ``` ### API Make a sandbox: ```javascript import createSandbox from 'jest-sandbox'; const sandbox = createSandbox(); ``` #### `sandbox.fn([implementation])` Returns a new [mock function](https://facebook.github.io/jest/docs/mock-function-api.html) and keeps track of it. Similar to calling `jest.fn([implementation])`. #### `sandbox.spyOn(object, methodName)` Spies on a method and returns a the wrapped [mock function](https://facebook.github.io/jest/docs/mock-function-api.html). Similar to calling `jest.spyOn(object, methodName)`. #### `sandbox.clear()` Clears all spies in the sandbox. Actually calls `.mockClear()` on every spy it keeps track of. #### `sandbox.reset()` Resets all spies in the sandbox. Actually calls `.mockReset()` on every spy it keeps track of. #### `sandbox.restore()` Restores all spies in the sandbox. Actually calls `.mockRestore()` on every spy it keeps track of. #### Note Keep in mind that you can still clear, reset and restore the single spies manually, like you're used to. ### Contribute I'm happy for every feature request, bugfix and / or PR. Run tests: ```shell yarn test # npm test is also ok ``` Build the whole shebang: ```shell yarn build # npm build works as well ```