특정 컴포넌트의 개수를 테스트하는 코드를 작성해보자.
Copy import React from 'react' ;
import { shallow } from 'enzyme' ;
import preload from '../data.json' ; // shows 개수만큼 컴퍼넌트가 생성된다.
import Search from '../js/Search' ; // 부모 컴포넌트
import ShowCard from '../js/ShowCard' ; // 자식 컴포넌트
test ( '올바른 개수의 ShowCard가 렌더되어야 한다.' , () => {
const component = shallow (< Search />);
// preload.shows의 개수와
// Search의 자식 컴포넌트인 ShowCard의 개수를 비교한다.
expect ( preload . shows . length ) .toEqual ( component .find (ShowCard). length );
});
팁 1. test
는 it
으로 대체해도 된다.
Copy test('some suite', () => {})
it('some suite', () => {})
팀 2. 여러개의 test
를 describe
를 사용하여 그룹핑할 수 있다. 이렇게 하면, 그룹별로 오류/성공 메세지를 확인할 수 있다.
Copy describe ( 'Search 가 올바르게 렌더되어야 한다.' , () => {
test ( 'suite 1' , () => {});
test ( 'suite 2' , () => {});
...
});
팁 3. 테스트를 원하지 않는 경우 xtest
라고 수정한다.
Copy describe ( 'Search' , () => { // xdescribe 일 경우 이 그룹의 모든 테스트를 수행하지 않음
test ( 'suite 1' , () => {});
xtest ( 'suite 2' , () => {}); // 이 테스트는 수행하지 않는다.
...
});
팁 4. expect(테스트할 대상).toEqual(기대하는 결과)
이번 예제의 경우 ShowCard 의 개수가 테스트할 대상 이며, preload.shows 의 개수가 기대하는 결과 이다. 이렇게 하는 이유는 좀 더 의미있는(시맨틱) 실패 메시지를 표시하기 위함이다. 따라서 아래와 같이 작성하는 것이 좋다.
Copy // expect(preload.shows.length).toEqual(component.find(ShowCard).length);
expect ( component .find (ShowCard). length ) .toEqual ( preload . shows . length );
팁 5. 컴포넌트의 특정 자식 또는 태그를 찾고자 하는 경우 find(컴포넌트 또는 CSS Selector)
Copy const component = shallow (< Search />);
component .find (ShowCard); // ShowCard 컴포넌트를 찾는다.
component .find (input); // Search 컴포넌트의 input 을 찾는다.