Jestとreact-testing-libraryを使用するための単体テストを書いているコンポーネントライブラリがあります。特定の小道具やイベントに基づいて、特定の要素がレンダリングされていないことを確認します。
getByText
、getByTestId
など、expect
関数が起動する前にテストが失敗する原因となる要素が見つからない場合、react-testing-library
でスローおよびエラーが発生します。
React-testing-libraryを使用してjestに存在しないものをどのようにテストしますか?
From DOM Testing-library Docs-Appearance and Disappearance
要素が存在しないことを確認したい場合はどうすればよいですか?
通常、getByTestIdユーティリティを使用して、レンダリングされた要素にアクセスします。ただし、要素が見つからない場合、その関数はエラーをスローします。要素が存在しないことを具体的にテストする場合は、queryByTestIdユーティリティを使用する必要があります。このユーティリティは、見つかった場合は要素を返し、見つからない場合はnullを返します。
expect(queryByTestId('thing-that-does-not-exist')).toBeNull()
GetByTestIdの代わりにqueryByTestIdを使用する必要があります。
ここに、「car」IDのコンポーネントが存在しないかどうかをテストするコード例を示します。
describe('And there is no car', () => {
it('Should not display car mark', () => {
const props = {
...defaultProps,
base: null,
}
const { queryByTestId } = render(
<IntlProvider locale="fr" messages={fr}>
<CarContainer{...props} />
</IntlProvider>,
);
expect(queryByTestId(/car/)).toBeNull();
});
});