Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Can't resolve
- animation
- adb pair
- camera access
- device in use
- ffi-napi
- vercel git lfs
- 티스토리 성능
- Recoil
- dvh
- silent printing
- 이미지 데이터 타입
- custom printing
- Git
- nextjs
- github lfs
- ELECTRON
- Each child in a list should have a unique "key" prop.
- rolldown
- npm package
- camera permission
- Failed to compiled
- github 100mb
- react-native
- react-native-dotenv
- electron-packager
- html
- adb connect
- github pdf
- augmentedDevice
Archives
- Today
- Total
Bleeding edge
2022/11/08 - Jest 사용법 본문
지금 다룰 내용은 전반적인 Jest가 아니라 DOM에서의 Jest에 대한 간단한 element확인 방법에 대해 다룰 것이다. Jest에 대한 예시를 공부하기 전에 몇 가지 제스트의 메소드에 대해 메모하려고 한다.
1. describe
여러개의 테스트 코드를 묶을 때 사용한다.
describe("A11yHidden 컴포넌트", () => {
test("A11yHidden 컴포넌트는 정상적으로 렌더링됩니다.", () => {
render(<AllyHidden>테스트</AllyHidden>);
const element = screen.getByText(/테스트/);
expect(element).toBeInTheDocument();
});
test("span", () => {
render(<A11yHidden data-testid="tester" />);
const element = screen.getByTestId("tester");
expect(element.localName).toBe("span");
});
});
다음과 같이 코드를 묶을 때 사용한다.
2. test
jest에서의 한개의 테스트 단위를 이야기한다. only를 이용하여 여러 테스트중 한개의 테스트만 실행도 가능하다
describe("A11yHidden 컴포넌트", () => {
test("A11yHidden 컴포넌트는 정상적으로 렌더링됩니다.", () => {
render(<A11yHidden>테스트</A11yHidden>);
const element = screen.getByText(/테스트/);
expect(element).toBeInTheDocument();
});
test.only("span", () => {
render(<A11yHidden data-testid="tester" />);
const element = screen.getByTestId("tester");
expect(element.localName).toBe("span");
});
});
3. 기타(자세한 테스트 사용법
3-1 getByText - toBeIntheDocument
3-1-1
getByText를 이용하여 document 안에 있는 textContent를 가진 element를 선택한다
3-1-2
toBeIntheDocument를 이용하여 element가 document에 있는지 검색한다.
test("AllyHidden 컴포넌트는 정상적으로 렌더링됩니다.", () => {
render(<AllyHidden>테스트</AllyHidden>);
const element = screen.getByText(/테스트/);
expect(element).toBeInTheDocument();
});
3-2 getByTestId
3-2-1 data-testid 프로퍼티에 element에 고유한 값을 만들어 준다
3-2-2 getByTestId 를 이용하여 data-testid에 있는 고유한 값을 탐색한다
3-2-3
3-2-2에서 선택한 element에서 localName를 toBe 메서드로 검사한다.
test("span", () => {
render(<AllyHidden data-testid="tester" />);
const element = screen.getByTestId("tester");
expect(element.localName).toBe("span");
});
nodeName을 이용하여 검사하는 방법도 있다.
test("span", () => {
render(<AllyHidden data-testid="tester" />);
const element = screen.getByTestId("tester");
expect(element.nodeName.toLowerCase()).toBe("span");
});
toHaveClass를 이용하여 class를 체크한는 방법도 있다.
test("컴포넌트에 `className` 속성(prop) 값이 추가된 경우, 해당 클래스 이름을 포함합니다.", () => {
let expected = "userDefinedClassName";
render(<Banner className={expected} />);
const element = screen.getByRole("figure");
expect(element).toHaveClass("Banner", expected);
});
3-3 getByRole - toHaveStyle
button, figure와 같은 룰을 가진 element를 선택한다. 선택한 element에 toHaveStyle을 이용하여 해당 스타일일 프로퍼티와 값이 있는지 검사한다.
test("컴포넌트의 `width`, `height` 속성(prop) 값이 설정된 경우, 인라인 스타일로 반영됩니다.", () => {
const expected = {
width: "280px",
height: "590px",
};
render(<Banner width={expected.width} height={expected.height} />);
const element = screen.getByRole("figure");
expect(element).toHaveStyle(expected);
});
3-4 toBeA11yHidden
element를 screen의 메서드를 이용하여 선택하고 toBeA11yHidden을 사용하여 접근성 감춤 요건을 가지고 있는 element를 검사할 수 있다.
'ConnecTo' 카테고리의 다른 글
2022/11/10 - TIL (0) | 2022.11.10 |
---|---|
2022/11/09 - Hook (0) | 2022.11.09 |
2022/11/07 - 분할정복 (0) | 2022.11.07 |
2022/11/04 - TIL (0) | 2022.11.04 |
2022/11/03 - TIL (0) | 2022.11.03 |