jest-sandbox

Simple sinon like sandbox for jest

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
jest-sandbox
1.1.26 years ago7 years agoMinified + gzip package size for jest-sandbox in KB

Readme

jest-sandbox
Track jest spies and stubs easily.
Build Status
The one feature I really missed when switching from sinon.js to jest spies and mocks was sandboxes. 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:

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

yarn add jest-sandbox -D

Some people prefer npm;
npm i jest-sandbox -D

API

Make a sandbox:
import createSandbox from 'jest-sandbox';

const sandbox = createSandbox();

sandbox.fn([implementation])

Returns a new mock function
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. 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:
yarn test # npm test is also ok

Build the whole shebang:
yarn build # npm build works as well