Menu
Coddy logo textTech

テストと統合

CoddyのPHPジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 87/91。

challenge icon

チャレンジ

簡単

完全な Library Management System の構築、おめでとうございます!これですべてのコンポーネントをまとめ、すべてがシームレスに動作することを確認する段階です。library の完全なワークフローを実行する、包括的な Integration test を作成します。

コードを5つのファイルに整理します。

  • Book.php:readonly プロパティ(isbntitleauthor)、private の $isAvailable プロパティ、およびメソッド:isAvailable()markAsBorrowed()markAsReturned() を持つ Book class。
  • User.php:Book ファイルをインクルードします。readonly プロパティ(idname)、private の $borrowedBooks array、3MAX_BOOKS constant、およびすべての user メソッドを持つ User class。
  • Library.php:User ファイルをインクルードします。book の管理、貸し出し/返却機能、検索メソッド、および removeBook() メソッドを持つ Library class。
  • Admin.php:Library ファイルをインクルードします。User を継承し、addBookToLibrary()removeBookFromLibrary() メソッドを持つ Admin class。
  • main.php:Admin ファイルをインクルードします。ここで Integration test を実行します。2つの入力、つまり user name と検索する author のキーワードを受け取ります。

    library system をセットアップします。

    • Library を作成する
    • ID 1、name "LibraryAdmin"Admin を作成する
    • ID 2 と、指定された user name を持つ User を作成する

    admin に次の3冊の本を追加させます。

    • ISBN:"978-0"、Title:"PHP Fundamentals"、Author:"Sarah Johnson"
    • ISBN:"978-1"、Title:"OOP Patterns"、Author:"Mike Chen"
    • ISBN:"978-2"、Title:"Web Security"、Author:"Sarah Johnson"

    次に、各結果を新しい行に出力しながら、次の Integration test の手順を実行します。

    1. user に "978-0" を borrow させる
    2. user に "978-1" を borrow させる
    3. 2番目の入力を使用して author で検索し、件数を出力する:"Books by author: [count]"
    4. available な本を取得して出力する:"Available: [count]"
    5. user に "978-0" を返却させる
    6. 再度 available な本を取得して出力する:"Available after return: [count]"
    7. admin に "978-0" を削除させる
    8. admin にもう一度 "978-0" の削除を試行させる

この最終 challenge により、admin による inventory の管理、user による制限内での borrow、正確な結果を返す検索、そしてワークフロー全体を通じた availability の正しい更新など、system 全体が連携して動作することを検証できます。

自分で試してみよう

<?php

require_once 'Admin.php';

// 入力を読み取る
$userName = trim(fgets(STDIN));
$searchAuthor = trim(fgets(STDIN));

// TODO: Library を作成する

// TODO: ID 1 と名前 "LibraryAdmin" の Admin を作成する

// TODO: ID 2 と提供されたユーザー名の User を作成する

// TODO: admin に3冊の本を追加させる:
// - ISBN: "978-0", Title: "PHP Fundamentals", Author: "Sarah Johnson"
// - ISBN: "978-1", Title: "OOP Patterns", Author: "Mike Chen"
// - ISBN: "978-2", Title: "Web Security", Author: "Sarah Johnson"

// TODO: 統合テストのシーケンス:
// 1. ユーザーに "978-0" を借りさせる
// 2. ユーザーに "978-1" を借りさせる
// 3. Search by author using $searchAuthor and print: "Books by author: [count]"
// 4. 利用可能な本を取得して出力する: "Available: [count]"
// 5. ユーザーに "978-0" を返却させる
// 6. Get available books again and print: "Available after return: [count]"
// 7. 管理者に "978-0" を削除させる
// 8. 管理者に再度 "978-0" の削除を試みさせる

?>

オブジェクト指向プログラミングのすべてのレッスン

自分で練習してみよう: PHPオンラインコンパイラ