React コンポーネントでのページネーションのテストは、Web アプリケーションの機能とユーザー エクスペリエンスを確保する上で重要な部分です。酵素のサプライヤーとして、私はページネーション機能の信頼できるテストプロセスを確立することがいかに重要であるかを直接見てきました。このブログ投稿では、Enzyme を使用して React コンポーネントでページネーションをテストする方法に関するヒントとテクニックをいくつか紹介します。
React でのページネーションを理解する
テストに入る前に、ページネーションとは何か、そしてそれが React でどのように実装されるのかを簡単に説明します。ページネーションは、大きなデータセットをより小さな、より管理しやすいページに分割するために使用される手法です。 React アプリケーションでは、現在のページとページごとの項目数を追跡するために状態を使用してページネーションが実装されることがよくあります。
ページネーションを備えた React コンポーネントの簡単な例を次に示します。
import React, { useState } from'react'; const PaginationComponent = ({ items }) => { const [currentPage, setCurrentPage] = useState(1); const itemsPage = 10; const IndexOfLastItem = currentPage * itemsPerPage; const 最初の項目のインデックス = 最終項目のインデックス - ページごとの項目; const currentItems = items.slice(最初の項目のインデックス, 最後の項目のインデックス); const paginate = (pageNumber) => setCurrentPage(pageNumber); return ( <div> {currentItems.map((item) => ( <div key={item.id}>{item.name}</div> ))} {/* ページネーション ボタン */} <button onClick={() => paginate(currentPage - 1)} disabled={currentPage === 1}> 前へ </button> <button onClick={() => paginate(currentPage + 1)} 無効={indexOfLastItem >= items.length}> 次へ </button> </div> ); };デフォルトのPaginationComponentをエクスポートします。
テスト用の酵素のセットアップ
Enzyme は、React コンポーネントの出力のアサート、操作、トラバースを容易にする React 用の JavaScript テスト ユーティリティです。 Enzyme を使い始めるには、お使いの React のバージョンに対応するアダプターとともに Enzyme をインストールする必要があります。
npm install --save-dev 酵素酵素アダプター反応-16
テスト ファイルで Enzyme を設定する方法は次のとおりです。
import Enzyme, { 浅い } from 'enzyme'; 'enzyme-adapter-react-16' からアダプターをインポートします。 Enzyme.configure({ アダプター: 新しいアダプター() });
ページネーション機能のテスト
コンポーネントと酵素を設定したので、ページネーション機能のテストを開始しましょう。
初期レンダリングのテスト
最初にテストしたいのは、コンポーネントの最初のレンダリングです。最初のページに正しい商品数が表示されているかどうかを確認します。
React を「react」からインポートします。 './PaginationComponent' から PaginationComponent をインポートします。 import Enzyme, { 浅い } from 'enzyme'; 'enzyme-adapter-react-16' からアダプターをインポートします。 Enzyme.configure({ アダプター: 新しいアダプター() }); description('PaginationComponent', () => { const items = Array.from({ length: 20 }, (_, i) => ({ id: i, name: `Item ${i}` })); it('最初のページに正しい数の項目を表示する必要があります', () => { const Wrapper = Shallow(<PaginationComponent items={items} />); Expect(wrapper.find('div').length).toBe(10 + 2) // 10 項目 + 2 つのボタン });
ページネーションボタンのテスト
次に、ページネーション ボタンをテストして、期待どおりに機能することを確認します。 「次へ」ボタンをクリックして、次の項目が表示されるかどうかを確認します。
it('「次へ」ボタンがクリックされたときに、次の項目セットを表示する必要があります', () => { const Wrapper =shallow(<PaginationComponent items={items} />); const nextButton =wrapper.find('button').at(1); nextButton.simulate('click'); // 状態が更新されたかどうかを確認します Expect(wrapper.state('currentPage')).toBe(2); // 正しい番号かどうかを確認しますの項目が表示されます Expect(wrapper.find('div').length).toBe(10 + 2);
同様の方法で「前へ」ボタンをテストすることもできます。


it('「前へ」ボタンがクリックされたときに前の項目セットを表示する必要があります', () => { const Wrapper =shallow(<PaginationComponent items={items} />); const nextButton =wrapper.find('button').at(1); nextButton.simulate('click'); const prevButton =wrapper.find('button').at(0); prevButton.simulate('click'); Expect(wrapper.state('currentPage')).toBe(1); Expect(wrapper.find('div').length).toBe(10 + 2);
無効化されたボタンのテスト
また、ページネーション ボタンが無効であるべきときに無効になっていることもテストする必要があります。たとえば、最初のページでは「前へ」ボタンを無効にし、最後のページでは「次へ」ボタンを無効にする必要があります。
it('最初のページの前へボタンを無効にする必要があります', () => { const Wrapper =shallow(<PaginationComponent items={items} />); const prevButton =wrapper.find('button').at(0); Expect(prevButton.prop('disabled')).toBe(true); }); it('最後のページの「次へ」ボタンを無効にする必要があります', () => { const Wrapper =shallow(<PaginationComponent items={items} />); // 最後のページに移動します while (wrapper.find('button').at(1).prop('disabled') === false) {wrapper.find('button').at(1).simulate('click'); } const nextButton = Wrapper.find('button').at(1); Expect(nextButton.prop('disabled')).toBe(true);
高度なテストのシナリオ
エッジケースのテスト
基本的な機能に加えて、いくつかのエッジケースもテストする必要があります。たとえば、アイテムがない場合、またはページごとのアイテム数よりもアイテムの数が少ない場合はどうなりますか?
it('項目の空のリストを処理する必要があります', () => { const Wrapper = Shallow(<PaginationComponent items={[]} />); Expect(wrapper.find('div').length).toBe(2); // ボタンのみ }); it('ページあたりのアイテム数よりも小さいアイテムのリストを処理する必要があります', () => { const smallItems = Array.from({ length: 5 }, (_, i) => ({ id: i, name: `Item ${i}` })); const Wrapper = Shallow(<PaginationComponent items={smallItems} />); Expect(wrapper.find('div').length).toBe(5 + 2); });
ページごとに異なるアイテムを使用したテスト
コンポーネントをさまざまな値でテストすることもできます。ページあたりのアイテム数。これは、アプリケーションでユーザーがページごとに表示される項目数を変更できる場合に便利です。
it('異なる itemsPerPage 値で正しいアイテム数を表示する必要があります', () => { const CustomPaginationComponent = ({ items }) => { const [currentPage, setCurrentPage] = useState(1); const itemsPerPage = 5; // 残りのコンポーネント コード... }; const Wrapper = Shallow(<CustomPaginationComponent items={items} />); Expect(wrapper.find('div').length).toBe(5 + 2);
結論
Enzyme を使用して React コンポーネントのページネーションをテストすることは、アプリケーションの信頼性と機能性を確保するための重要なステップです。このブログ投稿のヒントと例に従うことで、ページネーション機能の包括的なテストを作成できます。
検査ニーズを満たす高品質の酵素製品をお探しの場合は、当社がお手伝いいたします。当社は、以下を含む幅広い酵素ソリューションを提供しています。ジンジャーオイル、工場供給の有機乾燥アボカドパウダー、 そして卸売価格バルク100%ホエイプロテイン。お客様の要件について話し合い、調達交渉を開始するには、お問い合わせください。
参考文献
- 酵素のドキュメント: https://enzymejs.github.io/enzyme/
- React ドキュメント: https://reactjs.org/docs/getting-started.html