Skip to content

Commit cac8eed

Browse files
committed
♻️ Use react-testing-library instead of enzyme.
1 parent e539fa4 commit cac8eed

File tree

5 files changed

+161
-305
lines changed

5 files changed

+161
-305
lines changed

twitter/package.json

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,8 @@
2929
]
3030
},
3131
"devDependencies": {
32-
"enzyme": "^3.10.0",
33-
"enzyme-adapter-react-16": "^1.14.0",
34-
"enzyme-to-json": "^3.4.0",
32+
"@testing-library/jest-dom": "^4.1.0",
33+
"@testing-library/react": "^9.1.4",
3534
"prettier": "^1.18.2"
36-
},
37-
"jest": {
38-
"snapshotSerializers": [
39-
"enzyme-to-json/serializer"
40-
]
4135
}
4236
}

twitter/src/Twitter.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,29 @@ class Twitter extends Component {
1717
{ tweets: [...this.state.tweets, { text: this.state.inputText }] },
1818
() => {
1919
this.setState({ inputText: '' })
20-
}
20+
},
2121
)
2222
}
2323

2424
render() {
2525
return (
26-
<div id="twitter-board" className="twitter-board">
26+
<div
27+
id="twitter-board"
28+
data-testid="twitter-board"
29+
className="twitter-board"
30+
>
2731
<form id="tweet-form" onSubmit={this.submitTweet}>
2832
<input
2933
id="tweet-text"
34+
data-testid="tweet-text"
3035
className="tweet-text"
3136
type="text"
3237
value={this.state.inputText}
3338
onChange={this.onTextChange}
3439
/>
3540
<input
3641
id="tweet-button"
42+
data-testid="tweet-button"
3743
className="tweet-button"
3844
type="submit"
3945
value="tweet"

twitter/src/Twitter.test.js

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
import React from 'react'
2-
import { shallow, mount } from 'enzyme'
2+
import { render, fireEvent } from '@testing-library/react'
33
import Twitter from './Twitter'
44

55
it('Contain twitter board.', () => {
6-
const wrapper = shallow(<Twitter />)
6+
const { getByTestId } = render(<Twitter />)
77

8-
expect(wrapper.find('#twitter-board')).toHaveLength(1)
8+
expect(getByTestId('twitter-board')).toBeVisible()
99
})
1010

1111
it('Render a tweet after simulate submit tweet event.', () => {
1212
const event = { target: { value: 'Hello' } }
13-
const wrapper = mount(<Twitter />)
13+
const { getByTestId, getByText } = render(<Twitter />)
1414

15-
wrapper.find('#tweet-text').simulate('change', event)
16-
wrapper.find('#tweet-button').simulate('submit')
15+
const tweetTextInput = getByTestId('tweet-text')
16+
fireEvent.change(tweetTextInput, event)
17+
const tweetButton = getByTestId('tweet-button')
18+
fireEvent.click(tweetButton)
1719

18-
expect(wrapper.find('.tweet-item')).toHaveLength(1)
19-
expect(wrapper.find('#tweet-text').props().value).toEqual('')
20+
expect(getByText('Hello')).toBeVisible()
21+
expect(tweetTextInput).toHaveTextContent('')
2022
})

twitter/src/setupTests.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
import Enzyme from 'enzyme'
2-
import Adapter from 'enzyme-adapter-react-16'
3-
4-
Enzyme.configure({ adapter: new Adapter() })
1+
import '@testing-library/jest-dom/extend-expect'

0 commit comments

Comments
 (0)