Add new file

This commit is contained in:
Martin Donnelly 2017-03-28 09:38:53 +00:00
parent 717a26362b
commit 17214fa8e6

114
cheatfiles/JestCheat.md Normal file
View File

@ -0,0 +1,114 @@
# Jest cheat sheet
## Basic test
```js
describe('makePoniesPink', () => {
it('should make each pony pink', () => {
const actual = fn(['Alice', 'Bob', 'Eve']);
expect(actual).toEqual(['Pink Alice', 'Pink Bob', 'Pink Eve']);
});
});
```
## Matchers
```js
expect.assertions(28)
expect(42).toBe(42)
expect(42).not.toBe(3)
expect([1, 2]).toEqual([1, 2])
expect('foo').toBeTruthy()
expect('').toBeFalsy()
expect(null).toBeNull()
expect(undefined).toBeUndefined()
expect(7).toBeDefined()
expect('long string').toMatch('str')
expect(result).toMatch(/regexp/)
expect({a: 1, b: 2}).toMatchObject({a: 1})
expect(2).toBeGreaterThan(1)
expect(1).toBeGreaterThanOrEqual(1)
expect(1).toBeLessThan(2)
expect(1).toBeLessThanOrEqual(1)
expect(0.2 + 0.1).toBeCloseTo(0.3, 5)
expect(['Alice', 'Bob', 'Eve']).toHaveLength(3)
expect(['Alice', 'Bob', 'Eve']).toContain('Alice')
expect([{a: 1}, {a: 2}]).toContainEqual({a: 1})
expect(['Alice', 'Bob', 'Eve']).toEqual(expect.arrayContaining(['Alice', 'Bob']))
expect(new A()).toBeInstanceOf(A)
expect(node).toMatchSnapshot()
expect(fn).toThrow()
expect(fn).toThrow('Out of cheese')
expect(fn).toThrowErrorMatchingSnapshot()
expect(fn).toBeCalled()
expect(fn).toHaveBeenCalledTimes(1)
expect(fn).toBeCalledWith(expect.stringContaining('foo'))
expect(fn).toBeCalledWith(expect.stringMatching(/^[A-Z]\d+$/))
expect(fn).toBeCalledWith(expect.objectContaining({x: expect.any(Number), y: expect.any(Number)}))
expect(fn).toHaveBeenLastCalledWith(expect.anything())
```
[Matchers docs](https://facebook.github.io/jest/docs/expect.html)
## Mock functions
```js
it('should call the callback', () => {
const callback = jest.fn();
fn(callback);
expect(callback).toBeCalled();
expect(callback.mock.calls[0][1].baz).toBe('pizza'); // Second argument of the first call
});
```
[Mock functions docs](https://facebook.github.io/jest/docs/mock-function-api.html)
## Mock modules
1. Create a file like `__mocks__/lodash/memoize.js`:
```js
module.exports = a => a;
```
2. Add to your test:
```js
jest.mock('lodash/memoize');
```
[Manual mocks docs](https://facebook.github.io/jest/docs/manual-mocks.html)
## Resources
* [Jest site](https://facebook.github.io/jest/)
* [Testing React components with Jest and Enzyme](http://blog.sapegin.me/all/react-jest) by Artem Sapegin
* [Testing React Applications](https://youtu.be/59Ndb3YkLKA) by Max Stoiber
* [Migrating to Jest](https://medium.com/@kentcdodds/migrating-to-jest-881f75366e7e#.pc4s5ut6z) by Kent C. Dodds
* [Migrating AVA to Jest](http://browniefed.com/blog/migrating-ava-to-jest/) by Jason Brown
* [How to Test React and MobX with Jest](https://semaphoreci.com/community/tutorials/how-to-test-react-and-mobx-with-jest)
***
## You may also like
* [Opinionated list of React components](https://github.com/sapegin/react-components)
## Contributing
Improvements are welcome! Open an issue or send a pull request.
## Author and license
[Artem Sapegin](http://sapegin.me/), a frontend developer at [Here](https://here.com/en) and the creator of [React Styleguidist](https://github.com/styleguidist/react-styleguidist). I also write about frontend at [my blog](http://blog.sapegin.me/).
CC0 1.0 Universal license, see the included [License.md](/License.md) file.