Laravel: Bắt đầu

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
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.xmltệ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 testschứa hai thư mục: Featurevà 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.phptệp được cung cấp trong cả thư mục thử nghiệm Featurevà Unitthư 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/phpunithoặ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 testingdo các biến môi trường được xác định trong phpunit.xmltệp. Laravel cũng tự động định cấu hình phiên và bộ nhớ cache cho arraytrì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 testingbiến môi trường có thể được định cấu hình trong phpunit.xmltệ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:clearlệnh Artisan trước khi chạy thử nghiệm của bạn!

 

Các .env.testingtập tin Môi trường

Ngoài ra, bạn có thể tạo một .env.testingtệp trong thư mục gốc của dự án. Tệp này sẽ được sử dụng thay vì .envtệ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=testingtùy chọn.

 

các CreatesApplicationTrait

Laravel bao gồm một CreatesApplicationđặc điểm được áp dụng cho TestCaselớp cơ sở của ứng dụng của bạn . Đặc điểm này chứa một createApplicationphươ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:testlệnh Artisan. Theo mặc định, các bài kiểm tra sẽ được đặt trong tests/Featurethư mục:

php artisan make:test UserTest

Nếu bạn muốn tạo một bài kiểm tra trong tests/Unitthư mục, bạn có thể sử dụng --unittùy chọn khi thực hiện make:testlệnh:

php artisan make:test UserTest --unit

 

Sơ khai thử nghiệm có thể được tùy chỉnh bằng cách sử dụng xuất bản sơ khai .

 

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/phpunithoặc php artisan testtừ 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 setUptearDowncá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ác parent::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 phpunitlệnh, bạn có thể sử dụng testlệ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 phpunitlệnh cũng có thể được chuyển cho testlệ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.3hoặc phiên bản cao hơn của nunomaduro/collisiongói. Sau đó, bao gồm --paralleltùy chọn khi thực hiện testlệ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 --processestù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_1và your_db_test_2kiể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 testlệnh Artisan để chúng có thể được sử dụng lại bằng các lệnh testgọ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-databasestù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 ParallelTestingmặt tiền, bạn có thể chỉ định mã được thực thi trên setUpvà tearDowncủ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 $tokenvà $testCasecá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 tokenphươ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();
» Tiếp: Test HTTP
« Trước: Bắt đầu
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!