Snapshot Testing (Feat. Jest)
특정 컴포넌트에 대한 스냅샷을 생성하여, 이전 컴퍼넌트와 달라진 부분이 있는지 체크한다. API JSON 에 대해서도 적용할 수 있다.
jest 설치 :
yarn add jest --dev
.babelrc 수정
...
"env": {
"test": {
"plugins": [
"transform-es2015-modules-commonjs"
]
}
}
.elintrc.json 수정
...
"env": {
"es6": true,
"browser": true,
"node": true,
"jest": true
}
루트에
__tests__
폴더 생성 (Airbnb rule 을 적용중인 경우만 해당)__tests__
안에[컴포넌트명].spec.jsx
생성아래 코드 입력
import React from 'react';
import renderer from 'react-test-renderer';
import Search from '../js/Search'; // 스냅샷을 찍을 컴퍼넌트
test('Search 컴퍼넌트가 올바르게 렌더링 되는지 확인한다.', () => {
const component = renderer.create(<Search />);
const tree = component.toJSON();
expect(tree).toMatchSnapshot();
});
test 실행 :
NODE_ENV=test ./node_modules/.bin/jest
최초 실행시에는 스냅샷만 저장하므로 테스트가 성공한다. 아래 경로에 스냅샷이 생성되었다.
__tests__
__snapshots__
Search.spec.jsx.snap
Search.jsx 컴포넌트를 수정한 다음 다시 테스트를 해보자.
test 실행 :
NODE_ENV=test ./node_modules/.bin/jest
Received value does not match stored snapshot 1.
- svideo
+ video
svideo 를 video 로 변경하였다. 이전 스냅샷과 다르므로 테스트가 실패했다.
만약 현재 상태로 스냅샷을 변경하려면 아래와 같이 해보자.
NODE_ENV=test ./node_modules/.bin/jest -u
스냅샷이 갱신되며, -u 를 제외하고 다시 테스트 해보면 성공하는 것을 볼 수 있다.
참고
Last updated
Was this helpful?