質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Jest

Jestは、JavaScriptのテストフレームワークです。設定が不要で、高速且つ安全にテストを開始できます。コードカバレッジを生成できる他、テストスコープ外のオブジェクトを容易にモック化できるなど、豊富な機能によりテストの導入を簡単にします。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

2502閲覧

jestでテストをパスしたいが、「The above error occurred in the <Link> component」のエラーが発生する。

tomy1123

総合スコア6

Jest

Jestは、JavaScriptのテストフレームワークです。設定が不要で、高速且つ安全にテストを開始できます。コードカバレッジを生成できる他、テストスコープ外のオブジェクトを容易にモック化できるなど、豊富な機能によりテストの導入を簡単にします。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2023/06/14 09:54

編集2023/06/14 09:57

実現したいこと

jestでテストを行い、render出来ていることを確かめたい。

前提

jestでテストを行ったのですが、「The above error occurred in the <Link> component」と「TypeError: Cannot destructure property 'basename' of 'React__namespace.useContext(...)' as it is null.」のエラーが発生していてテストがパスできません。

発生している問題・エラーメッセージ

console.error The above error occurred in the <Link> component:
console.error Error: Uncaught [TypeError: Cannot destructure property 'basename' of 'React__namespace.useContext(...)' as it is null.]

該当のソースコード

import React from 'react' import { Auth } from 'aws-amplify' import { Amplify, I18n } from 'aws-amplify' import { translations } from '@aws-amplify/ui-react' import { Authenticator } from '@aws-amplify/ui-react' import { createBrowserRouter, createRoutesFromElements, Route, RouterProvider, } from 'react-router-dom' import {Home} from './lib/pages/Home' I18n.putVocabularies(translations) I18n.setLanguage('ja') Amplify.configure({ Auth: { region: hogehoge, userPoolId: hogehoge, userPoolWebClientId: hogehoge } }) const App = () => { const router = createBrowserRouter( createRoutesFromElements( <> <Route path="/" element={<Layout />}> <Route index element={<Home />} /> </Route> </> ) ) return ( <Authenticator hideSignUp> <Home /> </Authenticator> ) } export default App
import React from 'react' const Home = () => { return ( <div> Homeだよ <div> ) } export default Home
import "@testing-library/jest-dom" import { render, screen } from "@testing-library/react" import { Home } from "../lib/pages/Home" describe('Home', () => { test('画面が表示されることを確認', () => { const { getByText } = render(<Home />) expect(getByText(/Homeだよ/i)).toBeInTheDocument() })

試したこと

react-router-domのバージョン問題かと思い。
アンインストールしたのち、「 npm i react-router-dom」を行ったが同様のエラーが出た。

補足情報(FW/ツールのバージョンなど)

@testing-library/jest-dom": "^5.16.5",
@types/jest": "^27.5.2",
@types/node": "^16.18.34",
react-router": "^6.11.2",
react-router-dom": "^6.12.1"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomy1123

2023/06/15 00:23

ドンピシャでした! ありがとうございます。
guest

回答1

0

自己解決

jestでレンダーする際にRouterでラップする必要があった。

投稿2023/06/15 00:34

tomy1123

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問