Kiểm thử và tích hợp
Thuộc phần Lập trình hướng đối tượng trong hành trình PHP của Coddy. Bài học 87 trên 91.
Thử thách
DễChúc mừng bạn đã xây dựng một Hệ thống quản lý thư viện hoàn chỉnh! Giờ là lúc kết hợp tất cả các thành phần và kiểm tra xem mọi thứ có hoạt động trơn tru hay không. Bạn sẽ tạo một bài kiểm thử tích hợp toàn diện để kiểm tra toàn bộ quy trình hoạt động của thư viện.
Bạn sẽ sắp xếp code trong năm tệp:
Book.php: LớpBookcó các thuộc tính chỉ đọc (isbn,title,author), một thuộc tính riêng tư$isAvailablevà các phương thức:isAvailable(),markAsBorrowed()vàmarkAsReturned().User.php: Nạp tệp Book. LớpUsercó các thuộc tính chỉ đọc (id,name), một mảng riêng tư$borrowedBooks, hằng sốMAX_BOOKScó giá trị3và tất cả các phương thức của người dùng.Library.php: Nạp tệp User. LớpLibrarycó chức năng quản lý sách, mượn và trả sách, các phương thức tìm kiếm cùng phương thứcremoveBook().Admin.php: Nạp tệp Library. LớpAdminkế thừaUser, có các phương thứcaddBookToLibrary()vàremoveBookFromLibrary().main.php: Nạp tệp Admin. Đây là nơi bạn chạy bài kiểm thử tích hợp. Bạn sẽ nhận hai đầu vào: tên người dùng và từ khóa tên tác giả cần tìm.Thiết lập hệ thống thư viện:
- Tạo một
Library - Tạo một
Admincó ID1và tên"LibraryAdmin" - Tạo một
Usercó ID2và tên người dùng đã cung cấp
Yêu cầu admin thêm ba cuốn sách sau:
- ISBN:
"978-0", Tên sách:"PHP Fundamentals", Tác giả:"Sarah Johnson" - ISBN:
"978-1", Tên sách:"OOP Patterns", Tác giả:"Mike Chen" - ISBN:
"978-2", Tên sách:"Web Security", Tác giả:"Sarah Johnson"
Sau đó chạy lần lượt các bước kiểm thử tích hợp sau, in mỗi kết quả trên một dòng mới:
- Yêu cầu người dùng mượn
"978-0" - Yêu cầu người dùng mượn
"978-1" - Tìm theo tác giả bằng đầu vào thứ hai và in số lượng:
"Books by author: [count]" - Lấy danh sách sách có thể mượn và in:
"Available: [count]" - Yêu cầu người dùng trả
"978-0" - Lấy lại danh sách sách có thể mượn và in:
"Available after return: [count]" - Yêu cầu admin xóa
"978-0" - Yêu cầu admin thử xóa lại
"978-0"
- Tạo một
Thử thách cuối cùng này kiểm tra xem toàn bộ hệ thống có hoạt động cùng nhau hay không: admin quản lý kho sách, người dùng mượn sách trong giới hạn, các lượt tìm kiếm trả về kết quả chính xác và tình trạng sách được cập nhật đúng trong suốt quy trình.
Tự làm thử
<?php
require_once 'Admin.php';
// Đọc dữ liệu đầu vào
$userName = trim(fgets(STDIN));
$searchAuthor = trim(fgets(STDIN));
// TODO: Tạo một Library
// TODO: Tạo một Admin có ID 1 và tên "LibraryAdmin"
// TODO: Tạo một User có ID 2 và tên người dùng đã cung cấp
// TODO: Cho quản trị viên thêm ba cuốn sách:
// - ISBN: "978-0", Tiêu đề: "PHP Fundamentals", Tác giả: "Sarah Johnson"
// - ISBN: "978-1", Tiêu đề: "OOP Patterns", Tác giả: "Mike Chen"
// - ISBN: "978-2", Tiêu đề: "Web Security", Tác giả: "Sarah Johnson"
// TODO: Trình tự kiểm thử tích hợp:
// 1. Cho người dùng mượn "978-0"
// 2. Cho người dùng mượn "978-1"
// 3. Tìm sách theo tác giả bằng $searchAuthor và in ra: "Books by author: [count]"
// 4. Lấy danh sách sách còn sẵn và in ra: "Available: [count]"
// 5. Cho người dùng trả sách "978-0"
// 6. Lấy lại danh sách sách còn sẵn và in ra: "Available after return: [count]"
// 7. Cho admin xóa sách "978-0"
// 8. Cho admin thử xóa sách "978-0" lần nữa
?>Tất cả bài học trong Lập trình hướng đối tượng
1Nền tảng về OOP
Tệp bên ngoàiGiới thiệu về OOPLớp và đối tượngTừ khóa $thisPhương thứcThuộc tínhHàm khởi tạo (__construct)Hàm hủy (__destruct)Ôn tập: máy tính đơn giản4Kế thừa
Kế thừa cơ bảnTừ khóa parent::Ghi đè phương thứcTừ khóa finalLớp trừu tượngÔn tập: hệ thống phân cấp nhân viên7Đóng gói
Công khai, được bảo vệ, riêng tưTìm hiểu sâu về bộ điều chỉnh quyền truy cậpGetter và setterẨn thông tinRút gọn hàm khởi tạo (8.0)Ôn tập: hệ thống hồ sơ học sinh2Không gian tên và tự động nạp
Giới thiệu về không gian tênTừ khóa useChuẩn tự động nạp PSR-4Trình tự động nạp của ComposerÔn tập: dự án có tổ chức5Giao diện và hợp đồng
Giới thiệu về giao diệnTriển khai giao diệnTriển khai nhiều giao diệnGiao diện và lớp trừu tượngGợi ý kiểu với giao diệnÔn tập: Máy tính hình học8Phương thức ma thuật
Giới thiệu về phương thức ma thuật__toString và __debugInfo__get, __set, __isset, __unset__call và __callStatic__clone và sao chép đối tượng__serialize và __unserializeÔn tập: Bộ sưu tập tùy chỉnh11Hệ thống kiểu dữ liệu và xử lý lỗi
Khai báo kiểu dữ liệuKiểu dữ liệu có thể nhận giá trị nullKiểu hợp và kiểu giaoCác lớp ngoại lệHệ thống phân cấp ngoại lệ tùy chỉnhTry, Catch, FinallyÔn tập: Trình xác thực biểu mẫu14Dự án: Quản lý thư viện
Tổng quan dự ánLớp sách và người dùng3Thuộc tính của lớp
Thuộc tính instance và staticHằng số trong lớpPhương thức và thuộc tính staticThuộc tính private và protectedThuộc tính chỉ đọc (PHP 8.1)Ôn tập: Trình quản lý tài khoản ngân hàng6Đa hình
Xem lại việc ghi đè phương thứcĐa hình qua giao diệnGợi ý kiểu và kiểu hợpLiên kết tĩnh muộnÔn tập: bộ xử lý thanh toánTự luyện tập: Trình biên dịch PHP online