ホームページ > バックエンド開発 > PHPチュートリアル > PHP配列のページネーションで単体テストを行うにはどうすればよいですか?

PHP配列のページネーションで単体テストを行うにはどうすればよいですか?

WBOY
リリース: 2024-05-01 13:18:01
オリジナル
843 人が閲覧しました

PHP 配列ページング単体テスト ガイドには、エッジ ケースのテスト (空の配列、無効なページ番号)、ページングの結果が正しいかどうかのテスト (最初のページ、中間ページ、最後のページ)、合計ページ番号の計算が正しいかどうかのテストが含まれています。 (要素数はページあたりの要素数に等しい、要素数はページあたりの要素数より大きい)。

PHP配列のページネーションで単体テストを行うにはどうすればよいですか?

PHP 配列ページング ユニット テスト ガイド

序文

配列ページングは​​、これは、開発中によく遭遇する一般的な操作です。ページング機能の正確性を確認するには、単体テストを実行することが非常に重要です。この記事では、実践的な例を含め、PHP 配列ページングの単体テストの作成方法を説明します。

実践的なケース

配列 $items があり、ページ分割して各ページに 10 個の要素を表示する必要があるとします。ページネーション関数 paginate() は次のとおりです:

function paginate(array $items, int $page = 1, int $perPage = 10): array
{
    $totalPages = ceil(count($items) / $perPage);
    
    if ($page < 1) {
        $page = 1;
    } elseif ($page > $totalPages) {
        $page = $totalPages;
    }
    
    $offset = ($page - 1) * $perPage;
    
    return array_slice($items, $offset, $perPage);
}
ログイン後にコピー

単体テスト

  1. エッジ ケースのテスト
  • 空の配列: ページング関数が空の配列に渡された場合に空の配列を返すようにします。
$this->assertEquals([], paginate([]));
ログイン後にコピー
  • 無効なページ番号: 負のページ番号と合計ページ番号の範囲外のページ番号が渡されたときのページング関数の動作をテストします。
$this->assertEquals([], paginate([], -1));
$this->assertEquals([], paginate([], 11, 10));
ログイン後にコピー
  1. ページングの結果が正しいかどうかをテストします
  • 最初のページ: ページング関数は配列の最初のページ要素を返します。
$items = range(1, 100);
$this->assertEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], paginate($items));
ログイン後にコピー
  • 中間ページ: ページング関数が指定されたページ番号の要素を返すかどうかを確認します。
$this->assertEquals([51, 52, 53, 54, 55, 56, 57, 58, 59, 60], paginate($items, 6));
ログイン後にコピー
  • 最後のページ: ページング関数が配列の最後のページ要素を返すようにします。
$this->assertEquals([91, 92, 93, 94, 95, 96, 97, 98, 99, 100], paginate($items, 10));
ログイン後にコピー
  1. 総ページ数の計算が正しいかどうかをテストします
  • 要素の数は次のとおりですページあたりの要素数: 要素数がページあたりの要素数と等しい場合、合計ページ番号は 1 になります。
$items = range(1, 10);
$this->assertEquals(1, paginate($items, 1, 10));
ログイン後にコピー
  • 要素の数がページあたりの要素の数より大きい: 要素の数がページあたりの要素の数より大きい場合、合計ページ番号は四捨五入する必要があります。
うわー

以上がPHP配列のページネーションで単体テストを行うにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート