Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/joincolony/jest-sandbox
🏝 Simple sinon like sandbox for jest
https://github.com/joincolony/jest-sandbox
jest sandbox sinon testing
Last synced: 6 days ago
JSON representation
🏝 Simple sinon like sandbox for jest
- Host: GitHub
- URL: https://github.com/joincolony/jest-sandbox
- Owner: JoinColony
- License: mit
- Created: 2017-04-13T20:56:56.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2020-06-02T23:52:52.000Z (over 4 years ago)
- Last Synced: 2024-10-19T00:17:01.600Z (21 days ago)
- Topics: jest, sandbox, sinon, testing
- Language: JavaScript
- Homepage:
- Size: 3.9 MB
- Stars: 16
- Watchers: 6
- Forks: 1
- Open Issues: 17
-
Metadata Files:
- Readme: Readme.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# jest-sandbox
[![Greenkeeper badge](https://badges.greenkeeper.io/JoinColony/jest-sandbox.svg)](https://greenkeeper.io/)
Track jest spies and stubs easily.
[![CircleCI](https://circleci.com/gh/JoinColony/jest-sandbox.svg?style=svg)](https://circleci.com/gh/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
```