Có rất nhiều cách để bạn có thể kiểm tra dự án của mình. Trong ví dụ của tôi về trình chỉnh sửa Trang đơn giản, tôi đã viết các bài kiểm tra nhanh cho tất cả các nội dung bên dưới. Đây là tất cả các ví dụ về các tính năng mà chúng tôi không muốn kiểm tra thủ công khi phát triển dự án, thay vào đó cho phép PHPUnit thông báo cho chúng tôi khi có sự cố
KIỂM TRA HTTP
ỦY QUYỀN
Trên hệ thống của chúng tôi, chúng tôi có 2 vai trò. quản trị viên và người dùng. Quản trị viên có thể truy cập bảng quản trị và có toàn quyền truy cập vào hệ thống, trong khi người dùng chỉ có thể đăng nhập vào khu vực phía trước. Chúng tôi có thể viết một bài kiểm tra để kiểm tra xem chỉ quản trị viên mới có thể truy cập bất kỳ lượt xem Trang nào
/* @kiểm tra /
chức năng công khai ausercannotaccessthecreatepage_view[]
{
// Đăng nhập với tư cách người dùng
$this->actAs[Người dùng. nhà máy[]->người dùng[]->tạo[]];
// Mô phỏng yêu cầu GET tới URL đã cho
$response = $this->get['/admin/pages/create'];
// Kiểm tra phản hồi, lẽ ra chúng ta phải
// chuyển hướng đến trang chủ
$response->assertRedirect['/'];
}
Bạn sẽ nhận thấy rằng chúng tôi chưa sử dụng các tuyến đường khi thử nghiệm mà thay vào đó sử dụng các URL. Điều này là do chúng tôi có thể đã liên kết với các URL trong nội dung, menu hoặc bất kỳ nơi nào khác thực sự. Việc kiểm tra các URL như thế này cho chúng tôi biết tuyến đường đã thay đổi, vì vậy chúng tôi cần cập nhật các URL nơi chúng được sử dụng hoặc sửa tuyến đường nếu cần
THẨM ĐỊNH
Khi bạn thiết lập lưu trữ và cập nhật mô hình, bạn sẽ sử dụng các lớp Yêu cầu để xử lý xác thực dữ liệu. Điều này có thể đơn giản hoặc phức tạp như bạn cần. bạn có thể bắt đầu với, sẽ bao gồm phần lớn các trường hợp. Trên repo ví dụ của chúng tôi, chúng tôi có các trường tiêu đề và nội dung được đặt làm chuỗi bắt buộc
quy tắc chức năng công khai []. mảng
{
trở lại [
'tiêu đề' => 'chuỗi. yêu cầu',
'nội dung' => 'chuỗi. yêu cầu',
];
}
Chúng tôi có thể viết các bài kiểm tra để kiểm tra xác thực. Ý tưởng là xây dựng một danh sách dữ liệu, đăng nó lên một URL và kiểm tra xem không có bất kỳ lỗi nào. Thử nghiệm này không gửi bất kỳ dữ liệu nào và kiểm tra xem lỗi yêu cầu đối với trường tiêu đề và nội dung
/* @kiểm tra /
chức năng công cộng createpagerequires_validation[]
{
$this->loginAsAdmin[];
// Đăng dữ liệu rỗng lên route trang tạo
$response = $this->post['/admin/pages'];
// Điều này sẽ gây ra lỗi với
// các trường tiêu đề và nội dung khi chúng không xuất hiện
$response->assertSessionHasErrors[[
'chức vụ',
'nội dung',
]];
}
CHỈ ĐƯỜNG
Nếu bạn có bất kỳ chuyển hướng nào trong hệ thống của mình - e. g. nếu bạn chưa đăng nhập nhưng cố gắng truy cập quản trị viên, nó sẽ chuyển hướng bạn đến màn hình đăng nhập - vâng, bạn đã đoán ra rồi, bạn có thể kiểm tra những điều này. Bạn có thể tạo tài liệu Laravel, nhưng đây là một ví dụ nhanh
Nếu bạn cố gắng tạo một trang với tư cách là người dùng chứ không phải quản trị viên, nó sẽ chuyển hướng bạn đến trang chủ
/* @kiểm tra /
chức năng công khai ausercannotaccessthecreatepage_view[]
{
// Đăng nhập với tư cách người dùng
$this->actAs[Người dùng. nhà máy[]->người dùng[]->tạo[]];
// Mô phỏng yêu cầu GET tới URL đã cho
$response = $this->get['/admin/pages/create'];
// Kiểm tra phản hồi, lẽ ra chúng ta phải được chuyển hướng đến trang chủ
$response->assertRedirect['/'];
}
CƠ SỞ DỮ LIỆU
Một cách khác để chúng tôi có thể kiểm tra số lượng dữ liệu là kiểm tra xem sau khi bạn gửi dữ liệu, dữ liệu đó có trong cơ sở dữ liệu không
Thay vì viết một mảng dữ liệu được mã hóa cứng cho thử nghiệm của mình, bạn có thể tạo một lớp xuất xưởng để tạo các giá trị ngẫu nhiên bằng cách sử dụng Faker
không gian tên Cơ sở dữ liệu\Factories;
sử dụng Ứng dụng\Miền\Page\Mô hình\Trang;
sử dụng Illuminate\Database\Eloquent\Factories\Factory;
lớp PageFactory mở rộng Nhà máy
{
/**
* Tên model tương ứng của nhà máy
*
* chuỗi @var $model
*/
được bảo vệ $model = Trang. tầng lớp;
/**
* Xác định trạng thái mặc định của mô hình
*
* @return mảng
*/
định nghĩa hàm công khai []
{
trở lại [
'title' => $this->faker->sentence,
'slug' => $this->faker->slug,
'content' => $this->faker->paragraphs[rand[1, 9], true],
];
}
}
Các trường tiêu đề, sên và nội dung đều nhận các giá trị ngẫu nhiên do Kẻ giả mạo tạo ra. Bạn có thể tìm thêm thông tin về các nhà máy trong và các loại trình tạo có thể tìm thấy trong tài liệu FakerPHP
Khi chúng tôi kiểm tra cơ sở dữ liệu, chúng tôi sử dụng một phương thức có tên là assertDatabaseHas[]. Bạn nhập tên bảng cơ sở dữ liệu và một mảng các giá trị mà bạn muốn nó có. Tôi không khuyên bạn nên thử nghiệm các giá trị đã tạo/cập nhật bằng giá trị này, vì thời gian từ khi tạo dữ liệu đến khi kiểm tra dữ liệu sẽ thay đổi và điều này sẽ khiến thử nghiệm thất bại. Thay vào đó, tôi đặt các cột cụ thể để kiểm tra
Đây là một ví dụ mà tôi đang kiểm tra một quản trị viên có thể tạo một trang bằng cách xác nhận dữ liệu có trong bảng
/* @kiểm tra /
chức năng công khai admincancreate_page[]
{
$this->loginAsAdmin[];
// Lấy dữ liệu từ Factory
$trang = Trang. nhà máy[]->make[]->toArray[];
// Đăng dữ liệu lên route 'tạo'
$response = $this->post['/admin/pages', $page];
// Kiểm tra cơ sở dữ liệu có dữ liệu chúng tôi đã tạo với nhà máy
$this->assertDatabaseHas[
'trang',
[
'tiêu đề' => $page['tiêu đề'],
'sên' => Str. sên[$page['title']],
'nội dung' => $page['nội dung'],
]
];
}
TÓM LƯỢC
Kiểm thử tự động là một công cụ rất mạnh có thể giúp bạn xây dựng trang web của mình mà không phải lo lắng về các chi tiết nhỏ. Các ví dụ tôi đưa ra chỉ là cơ bản để giúp bạn bắt đầu, nhưng có rất nhiều cách để mở rộng từ đây