0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

カスタムフックのテスト(Jest)でRecoilでステートが更新されているかチェックする

Posted at

はじめに

Recoilを導入してテストをする際にステートが更新されていることをどうしてもテストしたかったのですが、なかなか解決方法が見つからなかったのでまとめます

問題

Reactのカスタムフックでログイン認証(Axios)を実装しました
そこでは、Axiosの結果に応じて、RecoilisLoginをtrue/falseに切り替えるという処理を行いました

Jestを書く際に、Recoilのステートが変わることをテストしようとしましたが、公式をみてもやり方がよくわからず困りました

解決方法

testing-library/react-hookを利用して以下のように書けました

test.tsx

  const {result} = renderHook(
    () => {
      const [isLogin, setIsLogin] = useRecoilState(isLoginState)
      const { login } = useAuth()
      return {
        isLogin,
        setIsLogin,
        login,
      }
    },
    {
      wrapper: RecoilRoot
    }
  )

(関数を呼び出す処理は省略)

expect(result.current.state).toBe(true)

おわりに

テストとして行うことが多そうなのですが、なかなかやり方がみつかりませんでした

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?