反応コンポーネントがJestで存在しない場合のテスト
時には、特定の要素がレンダリングされないかどうかをチェックするテストを書きたい場合があります.
たとえば、ユーザーが特定のレベルまたはアクションを持つまでセクションを無効にするパラメーターがあります.
これをテストする方法はいくつかあります.
非存在のためにテストするときに注意する最も重要なことは、クエリ項目を必要とすることです.
要素を探すときは、
この関数は、要素が存在することを知っている場合にはうまくいきますが、JESTはこれらが見つからなかった場合にエラーをスローします.
レンダリングされていない要素を安全にするには、クエリの代替を使用する必要があります.
以下のコンポーネントをスケッチしましょう.
これをテストするテストケースを書くことができます.
次の行は、変数をtrueに設定したときの2行目を示します.
それで、上記はまだ成功します.
しかし、今、どうやってそれが存在しないかをテストできます.
まず、私たちが同じ構文を使用するとき、何が起こるかを見ましょう
これは実際に使われてから
私のブログを読んでくれてありがとう.私の電子メール会報を購読して、接続してくださいFacebook or
たとえば、ユーザーが特定のレベルまたはアクションを持つまでセクションを無効にするパラメーターがあります.
これをテストする方法はいくつかあります.
要素を問い合わせる
非存在のためにテストするときに注意する最も重要なことは、クエリ項目を必要とすることです.
要素を探すときは、
getBy
or getAllBy
それから何か.この関数は、要素が存在することを知っている場合にはうまくいきますが、JESTはこれらが見つからなかった場合にエラーをスローします.
レンダリングされていない要素を安全にするには、クエリの代替を使用する必要があります.
queryBy
and queryAllBy
.以下のコンポーネントをスケッチしましょう.
function App({ firstTime = false }) {
return (
<div className='App'>
<strong>Welcome to our app</strong>
{firstTime && <p>I see this is your first time!</p>}
</div>
);
}
ご覧の通り、これは2行になりますが、firstTime
変数をtrueに2番目の文を表示する.これをテストするテストケースを書くことができます.
it('should render welcome text', async () => {
render(<App />);
expect(screen.getByText('Welcome to our app')).toBeInTheDocument();
});
上記のテストは、我々の歓迎テストの同じ発生のためにテストします.次の行は、変数をtrueに設定したときの2行目を示します.
it('should render first time text when set', async () => {
render(<App firstTime={true} />);
expect(
screen.getByText('I see this is your first time!')
).toBeInTheDocument();
});
ご覧の通り、私はfirstTime
変数をtrueに設定します.それで、上記はまだ成功します.
しかし、今、どうやってそれが存在しないかをテストできます.
まず、私たちが同じ構文を使用するとき、何が起こるかを見ましょう
.not
コール.it(`shouldn't render first time text when set`, async () => {
render(<App />);
expect(
screen.getByText('I see this is your first time!')
).not.toBeInTheDocument();
});
上記のテストを実行すると、次のエラーが発生します.これは実際に使われてから
getBy
. 我々は単に使用してこれを修正することができますqueryBy
.it('should render first time text when set', async () => {
render(<App firstTime={true} />);
expect(
screen.queryByText('I see this is your first time!')
).toBeInTheDocument();
});
そして、それは我々が安全な方法で要素の非存在をチェックする方法です.読んでいただきありがとうございます、接続しましょう!
私のブログを読んでくれてありがとう.私の電子メール会報を購読して、接続してくださいFacebook or
Reference
この問題について(反応コンポーネントがJestで存在しない場合のテスト), 我々は、より多くの情報をここで見つけました https://dev.to/dailydevtips1/testing-if-a-react-component-doesnt-exist-with-jest-55l1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol