Jest and React Testing
(작성한 코드가 의도대로 작동하는지 확인하는 것!)
Matchers
앞에 not.
을 붙이면 아닌 경우로 테스트 한다.expect(a).toBe(b)
: a가 b 이다 즉, 뒤에 각 각 다른 matcher를 입력하여 확인하는 형태이다.test('Fake Test',()=> {
expect(true).toBeTruthy();
});
test( “” , () => {} )
export const add = (x, y) => x + y;
//unit test
//It only tests one thing
test('<add>', () => {
expect(add(1, 2)).toBe(3);
expect(add(3, 2)).toBe(5);
});
test('Fake two', () => {
expect(false).toBeFalsy();
});
export const totalPrice = (subTotal, total) => {
return '$' + add(subTotal, total);
};
import { add , total} from './App';
test('total', () => {
expect(total(10,3)).toBe('$13');
});
describe ('total', () => {
it('add', () =>{
expect((add(1,2)).toBe(3);
});
it('addPrice', () =>{
expect((addPrice(1,2)).toBe('$3')
});
})
const add = jest.fn(() => 3);
//fuction을 시험 해본다는 의미로 예상되는 값을 대입해 테스트 한다.
test('add', () => {
expect(add(0, 3)).toBe(3);
expect(add).toHaveBeenCalledTimes(1);
//add function을 한번 불렀다는 것 확인하는 테스트
expect(add).toHaveBeenCalledWith(0,3);
//넘겨주었던 숫자를 확인하는 요소
});
beforeEach(() => {}), afterEach(() => {})
/ beforeAll(() => {}), afterAll(() => {})
afterEach(cleanup)
전역에서 처리해준다.
import React from 'react';
import ReactDOM from 'react-dom';
import Button from './button';
import { render, cleanup } from '@testing-library/react';
import '@testing-library/jest-dom/extend-expect';
import renderer from 'react-test-renderer';
afterEach(cleanup);
it('renders without crashing', () => {
const button = document.createElement('button');
ReactDOM.render(<Button />, button);
});
it('renders button', () => {
const { getByTestId } = render(<Button label='click me please' />);
expect(getByTestId('button')).toHaveTextContent('click me please');
});
it('matches snapshot', () => {
const tree = renderer.create(<Button label='save'></Button>).toJSON();
expect(tree).toMatchSnapshot();
});
it('matches snapshot', () => {
const tree = renderer.create(<Button label='click me please'></Button>).toJSON();
expect(tree).toMatchSnapshot();
});