Menu
Coddy logo textTech

テストと統合

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

challenge icon

チャレンジ

簡単

完全な図書管理システムを構築できたこと、おめでとうございます!いよいよ、すべてのコンポーネントを統合し、すべてがシームレスに動作することを確認する時が来ました。ライブラリの全ワークフローを実行する包括的な統合テストを作成します。

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

  • Book.php — readonlyプロパティ(isbntitleauthor)、privateな $isAvailable プロパティ、およびメソッド:isAvailable()markAsBorrowed()markAsReturned() を持つ Book クラス。
  • User.php — Bookファイルをインクルードします。readonlyプロパティ(idname)、privateな $borrowedBooks 配列、値が 3MAX_BOOKS 定数、およびすべてのユーザーメソッドを持つ User クラス。
  • Library.php — Userファイルをインクルードします。書籍管理、貸出/返却機能、検索メソッド、および removeBook() メソッドを持つ Library クラス。
  • Admin.php — Libraryファイルをインクルードします。User を継承し、addBookToLibrary()removeBookFromLibrary() メソッドを持つ Admin クラス。
  • main.php — Adminファイルをインクルードします。ここで統合テストを実行します。ユーザー名と検索する著者のキーワードの2つの入力を受け取ります。

    ライブラリシステムをセットアップします:

    • Library を作成する
    • ID 1、名前 "LibraryAdmin"Admin を作成する
    • ID 2、提供されたユーザー名の User を作成する

    管理者に以下の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"

    次に、以下の統合テストシーケンスを実行し、各結果を新しい行に出力します:

    1. ユーザーに "978-0" を借りさせる
    2. ユーザーに "978-1" を借りさせる
    3. 2番目の入力を使用して著者で検索し、その数を出力する:"Books by author: [count]"
    4. 利用可能な書籍を取得し、出力する:"Available: [count]"
    5. ユーザーに "978-0" を返却させる
    6. 再度利用可能な書籍を取得し、出力する:"Available after return: [count]"
    7. 管理者に "978-0" を削除させる
    8. 管理者に再度 "978-0" を削除させようとする

この最終チャレンジでは、システム全体が連携して動作することを確認します。管理者が在庫を管理し、ユーザーが制限内で借り、検索が正確な結果を返し、ワークフロー全体を通じて利用可能性が正しく更新されることを検証します。

自分で試してみよう

<?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: 管理者に3冊の本を追加させる:
// - ISBN: "978-0", タイトル: "PHP Fundamentals", 著者: "Sarah Johnson"
// - ISBN: "978-1", タイトル: "OOP Patterns", 著者: "Mike Chen"
// - ISBN: "978-2", タイトル: "Web Security", 著者: "Sarah Johnson"

// TODO: 統合テストのシーケンス:
// 1. ユーザーに "978-0" を借りさせる
// 2. ユーザーに "978-1" を借りさせる
// 3. $searchAuthor を使用して著者で検索し、次のように出力する: "Books by author: [count]"
// 4. 利用可能な本を取得し、次のように出力する: "Available: [count]"
// 5. ユーザーに "978-0" を返却させる
// 6. 再度利用可能な本を取得し、次のように出力する: "Available after return: [count]"
// 7. 管理者に "978-0" を削除させる
// 8. 管理者に再度 "978-0" の削除を試行させる

?>

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