May 21, 2023
4 mins read
現在以下の書籍でフロントのテストを学習しているので、勉強になったDOMの取得方法をまとめる。 書籍通り、ReactのUIコンポーネントのテスト方法を記載していく。
ReactのUIコンポーネントのDOMを取得する方法で、暗黙的なロールを活用した取得方法があったので、まとめていく
以下のコンポーネントのテストをしていく。
import {ReactNode} from "react";
export const Heading = ({children}: {children: ReactNode}) => {
return (
<h1>{children}</h1>
);
};
今回は簡易的に、props
の値がh1
タグで表示されているかをテストしていく。
import {render, screen} from "@testing-library/react";
import {Heading} from "./Heading";
test('propsが値がh1タグに存在していること', () => {
render(<Heading>test</Heading>)
expect(screen.getByRole('heading', {name: 'test'})).toBeInTheDocument()
})
上記のgetByRole
の第一引数にheading
を指定しているが、h1タグの暗黙的なロールがheading
であるため、heading
を指定している。
このように暗黙的なロールをうまく使えば、test-id
みたいなカスタム属性をなどを使用せずに、テストをかくことができる。
また、Testing Libraryも公式も暗黙的なロールを使用することを推奨している。
暗黙的なルール一覧はこちらから確認ができる。
※上記はaria-query
というライブラリのドキュメントであるが、Testing Libraryのライブラリは内部的に依存するので、上記を参考にしても問題ない
UIコンポーネントのテストをする際は、暗黙的なロールを使用することで、テストを書きやすくなるので、ぜひ活用していきたい。
Testing Library
暗黙的なルール一覧(aria-query)
フロントエンド開発のためのテスト入門 今からでも知っておきたい自動テスト戦略の必須知識