Laravel: Bắt đầu
Giải phóng thời gian, khai phóng năng lực
Giới thiệu
Laravel được xây dựng với mục đích kiểm tra. Trên thực tế, hỗ trợ kiểm tra với PHPUnit đã được bao gồm sẵn và một phpunit.xml
tệp đã được thiết lập cho ứng dụng của bạn. Khuôn khổ này cũng đi kèm với các phương thức trợ giúp thuận tiện cho phép bạn kiểm tra các ứng dụng của mình một cách rõ ràng.
Theo mặc định, thư mục ứng dụng của bạn tests
chứa hai thư mục: Feature
và Unit
. Các bài kiểm tra đơn vị là các bài kiểm tra tập trung vào một phần rất nhỏ, tách biệt trong mã của bạn. Trên thực tế, hầu hết các bài kiểm tra đơn vị có lẽ tập trung vào một phương pháp duy nhất. Các thử nghiệm trong thư mục thử nghiệm "Đơn vị" của bạn không khởi động ứng dụng Laravel của bạn và do đó không thể truy cập cơ sở dữ liệu ứng dụng của bạn hoặc các dịch vụ khung khác.
Kiểm tra tính năng có thể kiểm tra phần lớn mã của bạn, bao gồm cách một số đối tượng tương tác với nhau hoặc thậm chí là một yêu cầu HTTP đầy đủ tới điểm cuối JSON. Nói chung, hầu hết các bài kiểm tra của bạn phải là các bài kiểm tra tính năng. Các loại kiểm tra này cung cấp sự tin tưởng nhất rằng toàn bộ hệ thống của bạn đang hoạt động như dự kiến.
Một ExampleTest.php
tệp được cung cấp trong cả thư mục thử nghiệm Feature
và Unit
thư mục. Sau khi cài đặt một ứng dụng Laravel mới, hãy thực thi các lệnh vendor/bin/phpunit
hoặc php artisan test
để chạy các bài kiểm tra của bạn.
Môi trường
Khi chạy các bài kiểm tra, Laravel sẽ tự động đặt môi trường cấu hình thành testing
do các biến môi trường được xác định trong phpunit.xml
tệp. Laravel cũng tự động định cấu hình phiên và bộ nhớ cache cho array
trình điều khiển trong khi thử nghiệm, có nghĩa là không có dữ liệu phiên hoặc bộ nhớ cache nào được duy trì trong khi thử nghiệm.
Bạn có thể tự do xác định các giá trị cấu hình môi trường thử nghiệm khác nếu cần. Các testing
biến môi trường có thể được định cấu hình trong phpunit.xml
tệp ứng dụng của bạn , nhưng hãy đảm bảo xóa bộ nhớ cache cấu hình của bạn bằng config:clear
lệnh Artisan trước khi chạy thử nghiệm của bạn!
Các .env.testing
tập tin Môi trường
Ngoài ra, bạn có thể tạo một .env.testing
tệp trong thư mục gốc của dự án. Tệp này sẽ được sử dụng thay vì .env
tệp khi chạy các bài kiểm tra PHPUnit hoặc thực hiện các lệnh Artisan với --env=testing
tùy chọn.
các CreatesApplication
Trait
Laravel bao gồm một CreatesApplication
đặc điểm được áp dụng cho TestCase
lớp cơ sở của ứng dụng của bạn . Đặc điểm này chứa một createApplication
phương thức khởi động ứng dụng Laravel trước khi chạy các bài kiểm tra của bạn. Điều quan trọng là bạn phải để đặc điểm này ở vị trí ban đầu vì một số tính năng, chẳng hạn như tính năng kiểm tra song song của Laravel, phụ thuộc vào nó.
Tạo thử nghiệm
Để tạo một trường hợp thử nghiệm mới, hãy sử dụng make:test
lệnh Artisan. Theo mặc định, các bài kiểm tra sẽ được đặt trong tests/Feature
thư mục:
php artisan make:test UserTest
Nếu bạn muốn tạo một bài kiểm tra trong tests/Unit
thư mục, bạn có thể sử dụng --unit
tùy chọn khi thực hiện make:test
lệnh:
php artisan make:test UserTest --unit
Khi kiểm tra đã được tạo, bạn có thể xác định các phương pháp kiểm tra như bạn thường làm khi sử dụng PHPUnit . Để chạy các bài kiểm tra của bạn, hãy thực hiện lệnh vendor/bin/phpunit
hoặc php artisan test
từ thiết bị đầu cuối của bạn:
<?php
namespace Tests\Unit;
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function test_basic_test()
{
$this->assertTrue(true);
}
}
Nếu bạn xác định
setUp
/tearDown
các phương thức của riêng mình trong một lớp thử nghiệm, hãy nhớ gọi cácparent::setUp()
/parent::tearDown()
phương thức tương ứng trên lớp cha.
Chạy thử nghiệm
Như đã đề cập trước đây, khi bạn đã viết các bài kiểm tra, bạn có thể chạy chúng bằng cách sử dụng phpunit
:
./vendor/bin/phpunit
Ngoài phpunit
lệnh, bạn có thể sử dụng test
lệnh Artisan để chạy thử nghiệm của mình. Trình chạy thử nghiệm Artisan cung cấp các báo cáo thử nghiệm dài dòng để dễ dàng phát triển và gỡ lỗi:
php artisan test
Bất kỳ đối số nào có thể được chuyển cho phpunit
lệnh cũng có thể được chuyển cho test
lệnh Artisan :
php artisan test --testsuite=Feature --stop-on-failure
Chạy thử nghiệm song song
Theo mặc định, Laravel và PHPUnit thực thi tuần tự các bài kiểm tra của bạn trong một quy trình duy nhất. Tuy nhiên, bạn có thể giảm đáng kể thời gian chạy thử nghiệm của mình bằng cách chạy thử nghiệm đồng thời trên nhiều quy trình. Để bắt đầu, hãy đảm bảo ứng dụng của bạn phụ thuộc vào phiên bản ^5.3
hoặc phiên bản cao hơn của nunomaduro/collision
gói. Sau đó, bao gồm --parallel
tùy chọn khi thực hiện test
lệnh Artisan:
php artisan test --parallel
Theo mặc định, Laravel sẽ tạo càng nhiều quy trình khi có sẵn các lõi CPU trên máy của bạn. Tuy nhiên, bạn có thể điều chỉnh số lượng quy trình bằng cách sử dụng --processes
tùy chọn:
php artisan test --parallel --processes=4
Khi chạy thử nghiệm song song, một số tùy chọn PHPUnit (chẳng hạn như
--do-not-cache-result
) có thể không khả dụng.
Kiểm tra song song & Cơ sở dữ liệu
Laravel tự động xử lý việc tạo và di chuyển cơ sở dữ liệu thử nghiệm cho mỗi quá trình song song đang chạy thử nghiệm của bạn. Các cơ sở dữ liệu thử nghiệm sẽ được gắn với một mã thông báo quá trình là duy nhất cho mỗi quá trình. Ví dụ: nếu bạn có hai quy trình kiểm tra song song, Laravel sẽ tạo và sử dụng your_db_test_1
và your_db_test_2
kiểm tra cơ sở dữ liệu.
Theo mặc định, cơ sở dữ liệu thử nghiệm vẫn tồn tại giữa các lần gọi test
lệnh Artisan để chúng có thể được sử dụng lại bằng các lệnh test
gọi tiếp theo . Tuy nhiên, bạn có thể tạo lại chúng bằng cách sử dụng --recreate-databases
tùy chọn:
php artisan test --parallel --recreate-databases
Móc kiểm tra song song
Đôi khi, bạn có thể cần chuẩn bị một số tài nguyên nhất định được sử dụng bởi các thử nghiệm của ứng dụng để chúng có thể được sử dụng một cách an toàn bởi nhiều quy trình thử nghiệm.
Sử dụng ParallelTesting
mặt tiền, bạn có thể chỉ định mã được thực thi trên setUp
và tearDown
của một quy trình hoặc trường hợp thử nghiệm. Các lần đóng đã cho nhận lần lượt $token
và $testCase
các biến chứa mã thông báo quy trình và trường hợp kiểm tra hiện tại:
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\ParallelTesting;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
ParallelTesting::setUpProcess(function ($token) {
// ...
});
ParallelTesting::setUpTestCase(function ($token, $testCase) {
// ...
});
// Executed when a test database is created...
ParallelTesting::setUpTestDatabase(function ($database, $token) {
Artisan::call('db:seed');
});
ParallelTesting::tearDownTestCase(function ($token, $testCase) {
// ...
});
ParallelTesting::tearDownProcess(function ($token) {
// ...
});
}
}
Truy cập mã thông báo kiểm tra song song
Nếu bạn muốn truy cập vào "mã thông báo" quy trình song song hiện tại từ bất kỳ vị trí nào khác trong mã thử nghiệm của ứng dụng, bạn có thể sử dụng token
phương pháp này. Mã thông báo này là số nhận dạng số nguyên, duy nhất cho một quy trình thử nghiệm riêng lẻ và có thể được sử dụng để phân đoạn tài nguyên qua các quy trình thử nghiệm song song. Ví dụ: Laravel tự động gắn mã thông báo này vào cuối cơ sở dữ liệu thử nghiệm được tạo bởi mỗi quá trình thử nghiệm song song:
$token = ParallelTesting::token();
Giải phóng thời gian, khai phóng năng lực