テストと統合
CoddyのPHPジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 87/91。
チャレンジ
簡単完全な図書管理システムを構築できたこと、おめでとうございます!いよいよ、すべてのコンポーネントを統合し、すべてがシームレスに動作することを確認する時が来ました。ライブラリの全ワークフローを実行する包括的な統合テストを作成します。
コードを5つのファイルに整理します:
Book.php— readonlyプロパティ(isbn、title、author)、privateな$isAvailableプロパティ、およびメソッド:isAvailable()、markAsBorrowed()、markAsReturned()を持つBookクラス。User.php— Bookファイルをインクルードします。readonlyプロパティ(id、name)、privateな$borrowedBooks配列、値が3のMAX_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"
次に、以下の統合テストシーケンスを実行し、各結果を新しい行に出力します:
- ユーザーに
"978-0"を借りさせる - ユーザーに
"978-1"を借りさせる - 2番目の入力を使用して著者で検索し、その数を出力する:
"Books by author: [count]" - 利用可能な書籍を取得し、出力する:
"Available: [count]" - ユーザーに
"978-0"を返却させる - 再度利用可能な書籍を取得し、出力する:
"Available after return: [count]" - 管理者に
"978-0"を削除させる - 管理者に再度
"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" の削除を試行させる
?>