ライブラリのテストと反応コンテキスト
多くの場合、我々は1つのテストセットアップを必要としません.
多くの場合、レンダリングに影響を与えるコンテキストや、ユーザーによって実行されるアクションと相互作用するコンテキストが含まれます.
次の例を設定します.
我々は、ユーザーコンテキストを持つアプリケーションがあります.“私たちはログインユーザーを持っている”に基づいて、我々は異なるレンダリング出力を表示する必要があります.
ログインしているユーザーがプロファイルとログアウトボタンを見ている間は、一度だけログインボタンを見ます.
我々は何かをテストする必要があるので、すぐに超基本的なコンテキストを設定してみましょう.
ファイルを作ることから始めましょう
このコンテキストをメインアプリケーションエントリポイントで使用できます.私は、私の中でこれを加えました
さあ、修正しましょう
まず第一に、我々のアプリケーションを実行しましょう.見るべきだ
さあ、楽しい部分に飛ばしましょう.
この文脈を使用する複数の方法がありますが、私は最も基本的な説明に焦点を当てるので、それを自分で試してみるのは簡単です.
を作成しましょう
また、直接'レンダリング'関数を使用してprevious test cases . この場合、レンダリングをコンテキストでラップします.
これを行う最も簡単な方法は、新しい
その中で、我々は単に
それから、我々が我々がユーザーを提供しないならば、それがログインテキストを示すかどうか見るために、我々の最初のテストを書くことができます.
それは成功する🎉
次のテストは、ユーザーを提供し、テキストが変更されているかどうかをテストします.
そして、それは、反応文脈をテストする最初の導入です.
これは、あなたのコンテキストがテストしたい複数のセッターを持っているので、超高レベルの抽象化だけです.
私のブログを読んでくれてありがとう.私の電子メール会報を購読して、接続してくださいFacebook or
多くの場合、レンダリングに影響を与えるコンテキストや、ユーザーによって実行されるアクションと相互作用するコンテキストが含まれます.
次の例を設定します.
我々は、ユーザーコンテキストを持つアプリケーションがあります.“私たちはログインユーザーを持っている”に基づいて、我々は異なるレンダリング出力を表示する必要があります.
ログインしているユーザーがプロファイルとログアウトボタンを見ている間は、一度だけログインボタンを見ます.
ステージの設定
我々は何かをテストする必要があるので、すぐに超基本的なコンテキストを設定してみましょう.
Note: This will be a little bit of a non-completed context. If you'd like to learn more about it: Read this article on React context
ファイルを作ることから始めましょう
UserContext.js
.import { createContext, useMemo } from 'react';
const UserContext = createContext(null);
export default UserContext;
export const UserContextProvider = ({ children, user }) => {
const userContext = useMemo(() => ({
user: user ?? null,
}));
return (
<UserContext.Provider value={userContext}>{children}</UserContext.Provider>
);
};
私はここであまり多くの詳細に入らないでください、しかし、基本的に、我々は新しい空の文脈を作成して、ユーザーオブジェクトのために値を保持するためにプロバイダーをつくります.このコンテキストをメインアプリケーションエントリポイントで使用できます.私は、私の中でこれを加えました
index.js
ファイル.import { UserContextProvider } from './UserContext';
ReactDOM.render(
<UserContextProvider user='Chris'>
<App />
</UserContextProvider>,
document.getElementById('root')
);
これは純粋にデモ目的のためです、そして、あなたは通常これを取り戻しますuser
いくつかの外部パーティからの値が、我々のテストユースケースのために、これはデモに最適です.さあ、修正しましょう
App
このコンテキストの値に基づいて動作するコンポーネント.import React, { useContext } from 'react';
import UserContext from './UserContext';
function App() {
const { user } = useContext(UserContext);
return user ? `Hello there ${user}` : 'Please login';
}
export default App;
これは非常に些細なことかもしれませんが、私たちの文脈がどのようにテストされるかをショーケースにするのに十分でしょう.まず第一に、我々のアプリケーションを実行しましょう.見るべきだ
Hello there Chris
として我々はハードChris
.コンテキストのテスト
さあ、楽しい部分に飛ばしましょう.
この文脈を使用する複数の方法がありますが、私は最も基本的な説明に焦点を当てるので、それを自分で試してみるのは簡単です.
を作成しましょう
App.test.js
ファイル.また、直接'レンダリング'関数を使用してprevious test cases . この場合、レンダリングをコンテキストでラップします.
これを行う最も簡単な方法は、新しい
renderApp
関数.const renderComponent = ({ username }) => {
return render(
<UserContextProvider user={username}>
<App />
</UserContextProvider>
);
};
この例では、コンテキストをオプションusername
パラメータその中で、我々は単に
App
コンポーネント.それから、我々が我々がユーザーを提供しないならば、それがログインテキストを示すかどうか見るために、我々の最初のテストを書くことができます.
it('should show the login option', async () => {
renderComponent('');
expect(screen.queryByText('Please login')).toBeInTheDocument();
});
上記のテストを実行してみてください.それは成功する🎉
次のテストは、ユーザーを提供し、テキストが変更されているかどうかをテストします.
it(`should show the username`, async () => {
renderComponent({ username: 'Chris' });
expect(screen.queryByText('Hello there Chris')).toBeInTheDocument();
});
上記のテストの実行も成功します.そして、それは、反応文脈をテストする最初の導入です.
これは、あなたのコンテキストがテストしたい複数のセッターを持っているので、超高レベルの抽象化だけです.
読んでいただきありがとうございます、接続しましょう!
私のブログを読んでくれてありがとう.私の電子メール会報を購読して、接続してくださいFacebook or
Reference
この問題について(ライブラリのテストと反応コンテキスト), 我々は、より多くの情報をここで見つけました https://dev.to/dailydevtips1/testing-library-and-react-context-3apeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol