Làm cách nào để tạo bài kiểm tra đơn vị trong Laravel?

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

Làm cách nào để tạo các bài kiểm tra đơn vị trong Laravel?

Kiểm tra đơn vị với Laravel. Laravel là framework PHP phổ biến nhất để phát triển ứng dụng. .
điều kiện tiên quyết. .
Tạo trường hợp kiểm tra đơn vị Laravel. .
Viết một bài kiểm tra đơn vị cơ bản. .
khẳng địnhTrue[] và khẳng địnhFalse[].
khẳng địnhEquals[] và khẳng địnhNull[].
Sử dụng khẳng địnhSee[].
Given, When, Then trong thử nghiệm

Làm cách nào để chạy thử nghiệm đơn vị cụ thể trong Laravel?

Để chạy thử nghiệm, hãy thực thi lệnh kiểm tra nhà cung cấp/bin/phpunit hoặc php artisan từ thiết bị đầu cuối của bạn. .
không gian tên Kiểm tra \ Đơn vị;
sử dụng PHPUnit\Framework\TestCase;
lớp Ví dụTest mở rộng TestCase. {
* Một ví dụ thử nghiệm cơ bản
* * @return void
hàm công khai test_basic_test[]
{ $this->assertTrue[true];

Làm cách nào để tạo các bài kiểm tra PHPUnit?

Cách viết bài kiểm tra trong PHPUnit .
Để kiểm tra một lớp trong PHP, bạn sẽ tạo một lớp kiểm tra được đặt tên theo lớp đó. .
Lớp kiểm tra, UserTest, thường sẽ kế thừa lớp PHPUnit\Framework\TestCase
Các bài kiểm tra riêng lẻ trên lớp là các phương thức công khai được đặt tên bằng tiền tố kiểm tra

Làm thế nào để viết bài kiểm tra đơn vị trong PHP?

Đầu tiên, một số quy tắc phải được thực hiện. .
The test class must be named like Test for example MyFirstTest..
Tên tệp lớp kiểm tra phải giống với tên lớp
Mỗi lớp phải mở rộng từ lớp \PHPUnit\Framework\TestCase
Nên có ít nhất một phương thức [khẳng định] trong một lớp kiểm tra

Chủ Đề