Jest と react-testing-library を使用してユニット テストを記述しているコンポーネント ライブラリがあります。特定のプロパティまたはイベントに基づいて、特定の要素がレンダリングされていないことを確認したいです。
getByText
、、などは、要素が見つからない場合にgetByTestId
エラーをスローし、関数が実行される前にテストが失敗します。react-testing-library
expect
react-testing-library を使用して、jest に存在しないものをどのようにテストしますか?
ベストアンサー1
からDOM テスト ライブラリ ドキュメント - 出現と消失
アサーション要素が存在しない
標準メソッドは要素が見つからない場合にエラーをスローするため、要素がDOM に存在しない
getBy
ことをアサーションしたい場合は、代わりに API を使用できます。queryBy
const submitButton = screen.queryByText('submit') expect(submitButton).toBeNull() // it doesn't exist
API
queryAll
バージョンは、一致するノードの配列を返します。配列の長さは、DOM に要素が追加または削除された後のアサーションに役立ちます。const submitButtons = screen.queryAllByText('submit') expect(submitButtons).toHaveLength(2) // expect 2 elements
not.toBeInTheDocument
ユーティリティ
jest-dom
ライブラリは.toBeInTheDocument()
、要素がドキュメントの本文内にあるかどうかをアサートするために使用できるマッチャーを提供します。これは、クエリ結果があるかどうかをアサートするよりも意味がありますnull
。import '@testing-library/jest-dom/extend-expect' // use `queryBy` to avoid throwing an error with `getBy` const submitButton = screen.queryByText('submit') expect(submitButton).not.toBeInTheDocument()