FAQ
どの get メソッドを使用すればよいですか?
どのクエリを使用すればよいですか を参照してください
このライブラリで単体テストを書くことはできますか?
もちろんです!このライブラリでは、単体テスト、統合テスト、エンドツーエンドテストを作成できます。
テストを作成する際には、次の点に注意してください。
テストがソフトウェアの使用方法に似ているほど、より高い信頼性を得ることができます。 - 2018年2月17日
アプリがローカライズされていて、テストでテキストにアクセスできない場合はどうすればよいですか?
これはよくあることです。まず、テストでデフォルトのテキストを使用してみることをお勧めします。そうすることで、すべてがはるかに簡単になります(このユーティリティを使用するだけではありません)。それが不可能な場合は、おそらく `data-testid` に固執するのが最善です(とにかく悪いことではありません)。
data-testid は本当に好きではありませんが、他のクエリはどれも意味がありません。 data-testid を使用する必要がありますか?
絶対に必要ありません。とはいえ、`data-testid` 属性が気に入らない一般的な理由は、それを本番環境に送ることへの懸念です。物事がスムーズに進んでいることを確認するために、本番環境で時折実行される単純な E2E テストが必要になるでしょう。その場合、`data-testid` 属性は非常に役立ちます。本番環境でこれらを実行しない場合でも、本番環境に送ろうとしているのと同じコードで実行される E2E テストを実行したい場合があります。その場合も、`data-testid` 属性は役立ちます。
それでも `data-testid` 属性を送信したくない場合は、このシンプルな babel プラグインを使用して削除できます。
まったく使用したくない場合は、通常の DOM メソッドとプロパティを使用して、コンテナから要素をクエリできます。
const firstLiInDiv = container.querySelector('div li')
const allLisInDiv = container.querySelectorAll('div li')
const rootElement = container.firstChild
data-testid="item" 属性を付けたい項目のリストを反復処理している場合はどうすればよいですか?それらをどのように区別すればよいですか?
セレクタに :nth-child を含めることで、必要なものを選択するようにセレクタを作成できます。
const thirdLiInUl = container.querySelector('ul > li:nth-child(3)')
または、`getAllByRole` を使用して `listitem` ロールをクエリし、該当するインデックスにアクセスすることもできます。
const items = [
/* your items */
]
const {container} = render(/* however you render this stuff */)
const thirdItem = getAllByRole(container, 'listitem')[2]
助けて!コンポーネントメソッドまたはコンポーネントインスタンスにアクセスできません!
これは**意図的な**ものです。
コンポーネントの**実装の詳細を気にすることなく**、ユーザーが観察するコンポーネントの出力と機能のテストに集中してほしいと考えています。
これは、より壊れにくく、より意味のあるテストコードにつながると考えています。
詳細については、このテストライブラリの基本原則を参照してください。