728x90
jest를 활용해서 컴포넌트 테스트를 할 때 recoil을 세팅하고 싶을 떄가 있다.
이럴때 initializeState 속성을 활용하면 해결할 수 있다.
아래 코드를 보자.
Recoil을 사용하기 위해서 RecoilRoot를 씌워주고 initializeState 속성을 추가해줘서 시작할때 recoil값을 변경하는 것이 가능하다.
import React from "react";
import { render, screen } from "@testing-library/react";
import { matchers } from "@emotion/jest";
expect.extend(matchers);
import { RecoilRoot, useRecoilState } from "recoil";
import { MemoryRouter } from "react-router-dom";
import Component from "components/Tyle/Box/Component";
import { tyleInfoSelector } from "recoil/tyleInfo";
import { tyleInfoMock } from "mocks/mockJson";
describe("api테스트", () => {
test("email값을 잘 가져오는가", () => {
render(
<RecoilRoot
initializeState={(snapshot) =>
snapshot.set(tyleInfoSelector, tyleInfoMock)
}
>
<MemoryRouter>
<Component />
</MemoryRouter>
</RecoilRoot>
);
const Component = screen.getByText("email").nextSibling;
expect(Component?.textContent).toContain("test.com");
});
});
MemoyRouter는 react-route-dom 을 사용하기위해 넣은 컴포넌트로 신경쓰지 말자.
728x90
'FrontEnd > React' 카테고리의 다른 글
[React] TanStack(React-Query) DeepDive 해보기 (1) | 2024.02.23 |
---|---|
[NextJs] Next.js14에 styled components 적용하기 (0) | 2024.02.20 |
[storybook] viewport 설정 (1) | 2023.12.21 |
[REACT] storybook reset.css 적용 (0) | 2023.12.20 |
[Next.js] SSR프레임워크 Next.js와 css-in-JS (0) | 2023.12.19 |