プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • React
  • 【React】「react-testing-library」の「Render」テスト
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【React】「react-testing-library」の「Render」テスト

02.11

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

Render.js

以下のようなHTMLを返してくれるファンクショナルコンポーネントを作ります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import React from "react";
 
const Render = () => {
  return (
    <div>
      <h1>見出し</h1>
      <input type="text" />
      <button>ボタンタグ</button>
      <p>Pタグ</p>
    </div>
  );
};
 
export default Render;

Render.test.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import React from "react";
import { render, screen } from "@testing-library/react";
import Render from "./Render";
 
describe("Rendering", () => {
  it("全ての要素が正常にレンダリングされていること", () => {
    render(<Render />);
    expect(screen.getByRole("heading")).toBeTruthy();
    expect(screen.getByRole("textbox")).toBeTruthy();
    expect(screen.getAllByRole("button")[0]).toBeTruthy();
    expect(screen.getByText("pタグ")).toBeTruthy();
    expect(screen.queryByText("ボタンタグxxxx")).toBeNull();
    expect(screen.queryByText("ボタンタグxxxx").innerHTML).toBe("あああ");
 
  });
});

describe

テストのタイトルになります。

it

テストケースになります。

render(<Render />);

importしていたRenderコンポーネントの内容を取得します。

screen.debug();

テストには直接関係ないですが、これを使えば実際にrenderでどのような内容のHTMLの構造が取得できているか確認できます。

screen.getByRole("ロール名")

h1などの見出しタグの内容を取得します。「screen.debug(screen.getByRole("heading"))」と指定すれば、実際に取得できた見出しタグの内容を確認できたりします。指定しているRoleに関しては以下の記事に載っています。

https://github.com/A11yance/aria-query#elements-to-roles

screen.getAllByRole("ロール名")[0]

全ての要素を配列で返してくれます。具体的な要素を取得したい場合は[0]等により配列の具体的な番地を指定します。

screen.getByText("テキスト名")

HTML要素内のテキスト内容を探索します。戻り値としては、該当する文字列とタグを返してくれます。(上の例で言えば「<p>Pタグ</p>」を返してくれます。)

screen.queryByText("テキスト名")

getByTextと違い、該当しない場合はnullを返してくれます。なのでテキストが存在しないことのチェックをしたい場合はこちらを使います。getByTextだと存在しないとエラーになってしまい検証できないためです。

screen.getByTestId("ID名")

タグの中にIDが存在することをチェックできます。

screen.getByPlaceholderText("プレースホルダーで設定した名前")

プレースホルダーで設定した名前の検証を行えます。

.innerHTML

タグのテキスト内容を取得できます。

expect

判定するメソッドです。

toBeTruthy():Jestのマッチャー

要素が存在するかチェックをします。

toBeNull()

存在しないことをチェックします。

テストの実行

下記コマンドでテストを実行することが可能です。

1
npm test

スポンサーリンク
  • 2021 02.11
  • miyabisan2
  • コメントを書く
  • React
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2021 07.23

    【React/Redux】「Presentational Component」と「Container Component」、「HOC」

  2. 2021 06.20

    【JavaScript】「APIモックライブラリ」の比較

  3. 2021 06.20

    【React】基本(インストール、設定、Error Boundaryなど)、「react-router」について

  4. 2023 09.07

    【React】カスタムフックについて

  5. 2021 06.13

    【React】「Redux Tool Kit」のテスト

  6. 2021 06.06

    【React】「React Query」の「useMutation」について

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【React】テスト手法概要、Next.jsへのcyp…

【React】「React-Testing-Libra…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー