テストと統合
CoddyのPHPジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 87/91。
チャレンジ
簡単完全な Library Management System の構築、おめでとうございます!これですべてのコンポーネントをまとめ、すべてがシームレスに動作することを確認する段階です。library の完全なワークフローを実行する、包括的な Integration test を作成します。
コードを5つのファイルに整理します。
Book.php:readonly プロパティ(isbn、title、author)、private の$isAvailableプロパティ、およびメソッド:isAvailable()、markAsBorrowed()、markAsReturned()を持つBookclass。User.php:Book ファイルをインクルードします。readonly プロパティ(id、name)、private の$borrowedBooksarray、3のMAX_BOOKSconstant、およびすべての user メソッドを持つUserclass。Library.php:User ファイルをインクルードします。book の管理、貸し出し/返却機能、検索メソッド、およびremoveBook()メソッドを持つLibraryclass。Admin.php:Library ファイルをインクルードします。Userを継承し、addBookToLibrary()とremoveBookFromLibrary()メソッドを持つAdminclass。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 の手順を実行します。
- user に
"978-0"を borrow させる - user に
"978-1"を borrow させる - 2番目の入力を使用して author で検索し、件数を出力する:
"Books by author: [count]" - available な本を取得して出力する:
"Available: [count]" - user に
"978-0"を返却させる - 再度 available な本を取得して出力する:
"Available after return: [count]" - admin に
"978-0"を削除させる - 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オンラインコンパイラ