---
title: Enzyme v2
category: React
updated: 2017-10-12
weight: -1
deprecated_by: /enzyme
---
## Getting started
{: .-three-column}
### Introduction
{: .-intro}
**(Deprecated)** [Enzyme](http://airbnb.io/enzyme) lets you write unit tests for React components. This guide covers a previous version (v2.x).
### Mounting
{: .-prime}
```js
import {shallow, mount} from 'enzyme'
```
{: .-setup}
```js
wrap = shallow()
```
```js
wrap = mount()
```
Shallow wrapping doesn't descend down to sub-components.
A full mount also mounts sub-components.
See: [Shallow rendering](http://airbnb.io/enzyme/docs/api/shallow.html),
[Full rendering](http://airbnb.io/enzyme/docs/api/mount.html)
### Jest
```js
import toJson from 'enzyme-to-json'
```
{: .-setup}
```js
it('works', () => {
wrap = mount()
expect(toJson(wrap)).toMatchSnapshot()
})
```
Converts an Enzyme wrapper to a format compatible with Jest snapshots. See: [enzyme-to-json](https://www.npmjs.com/package/enzyme-to-json)
### Debugging
```js
console.log(wrap.debug())
```
Shows HTML for debugging purposes. See: [debug()](http://airbnb.io/enzyme/docs/api/ReactWrapper/debug.html)
## ReactWrapper
### Traversing
```js
wrap.find('button') // => ReactWrapper
wrap.filter('button') // => ReactWrapper
wrap.not('span') // => ReactWrapper (inverse of filter())
wrap.children() // => ReactWrapper
wrap.parent() // => ReactWrapper
wrap.closest('div') // => ReactWrapper
wrap.childAt(0) // => ReactWrapper
wrap.at(0) // => ReactWrapper
wrap.first() // => ReactWrapper
wrap.last() // => ReactWrapper
```
```js
wrap.get(0) // => ReactElement
wrap.getNode() // => ReactElement
wrap.getNodes() // => Array
wrap.getDOMNode() // => DOMComponent
```
See: [Full rendering API](http://airbnb.io/enzyme/docs/api/mount.html)
### Actions
```js
wrap.simulate('click')
```
### React components
```js
wrap.setState({ ... })
wrap.setProps({ ... })
wrap.setContext({ ... })
wrap.state() // => Any (get state)
wrap.props() // => object (get props)
wrap.context() // => Any (get context)
wrap.instance() // => ReactComponent
```
### Mount
```js
wrap.mount()
wrap.unmount()
wrap.update() // calls forceUpdate()
```
### Tests
```js
wrap.debug() // => string
wrap.html() // => string
wrap.text() // => string
wrap.type() // => string | function
wrap.name() // => string
wrap.is('.classname') // => boolean
wrap.hasClass('class') // => boolean
wrap.exists() // => boolean
wrap.contains() // => boolean
wrap.contains([ ]) // => boolean
wrap.containsMatchingElement() // => boolean
wrap.containsAllMatchingElements([ ]) // => boolean
wrap.containsAnyMatchingElements([ ]) // => boolean
```
## References
-