Simple sinon like sandbox for jest
npm install jest-sandboxTrack jest spies and stubs easily.

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.
``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('💩');
});
});
});
`
`shell`
yarn add jest-sandbox -D
Some people prefer npm;`shell`
npm i jest-sandbox -D
Make a sandbox:
`javascript
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.
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