LoginSignup
1
0

Cypressのコンポーネントテストで、"next/navigation"のuseRouterを使ったコンポーネントで"invariant expected app router to be mounted"と言われたら

Last updated at Posted at 2024-05-09

Cypressを使ってNext.jsのコンポーネントテストを行っていたとき、
"next/navigation"のuseRouterを使っていたコンポーネントで、
"invariant expected app router to be mounted"
というエラーが返ってきました。

そういう時の対処法を探していたところ、Storybookでの対処方法が以下で紹介されており、その方法でCypressでも対処可能でした。

↓参考にさせていただいたサイト

Next.jsから AppRouterContext を呼び出し、以下のようにテストしたいコンポーネントを囲ってあげれば、エラーを回避してテストできました。

import {
  AppRouterContext,
  type AppRouterInstance
} from "next/dist/shared/lib/app-router-context.shared-runtime";
import TestComponent from "..";

it("Test Component", () => {
  cy.mount(
    <AppRouterContext.Provider value={{} as AppRouterInstance}>
      <TestComponent />
    </AppRouterContext.Provider>
  );
})

ご参考になりましたら幸いです。

1
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
1
0