Skip to content

Kiểm thử: Bắt đầu (Testing: Getting Started)

Nguồn gốc: Bản dịch từ Testing: Getting Started

Giới thiệu (Introduction)

Laravel được xây dựng với tư duy testing-first. Hỗ trợ testing với PestPHPUnit được tích hợp sẵn, file phpunit.xml đã được cấu hình sẵn cho ứng dụng. Framework còn cung cấp helper methods tiện lợi.

Mặc định, thư mục tests chứa 2 thư mục con:

  • Unit — Test đơn vị nhỏ, cô lập. Không boot ứng dụng Laravel, không truy cập database.
  • Feature — Test phần lớn hơn: nhiều object tương tác, HTTP request đến JSON endpoint... Phần lớn test nên là Feature test.

File ExampleTest.php có sẵn trong cả 2 thư mục. Chạy test:

bash
./vendor/bin/pest
./vendor/bin/phpunit
php artisan test

Môi trường (Environment)

Khi chạy test, Laravel tự động set environment thành testing (từ phpunit.xml). Session và cache tự động dùng driver array — không có dữ liệu nào được lưu trữ khi testing.

File .env.testing

Tạo file .env.testing ở root project — sẽ được dùng thay .env khi chạy Pest/PHPUnit hoặc Artisan command với --env=testing.

Tạo Tests (Creating Tests)

Tạo Feature test:

bash
php artisan make:test UserTest

Tạo Unit test:

bash
php artisan make:test UserTest --unit

Ví dụ test cơ bản:

php
<?php

test('basic', function () {
    expect(true)->toBeTrue();
});
php
<?php

namespace Tests\Unit;

use PHPUnit\Framework\TestCase;

class ExampleTest extends TestCase
{
    public function test_basic_test(): void
    {
        $this->assertTrue(true);
    }
}

GỢI Ý

Nếu tự định nghĩa setUp/tearDown, nhớ gọi parent::setUp() ở đầu setUp và parent::tearDown() ở cuối tearDown.

Chạy Tests (Running Tests)

bash
./vendor/bin/pest
./vendor/bin/phpunit

Hoặc dùng Artisan test runner (output chi tiết hơn):

bash
php artisan test

Truyền arguments:

bash
php artisan test --testsuite=Feature --stop-on-failure

Chạy Tests song song (Running Tests in Parallel)

Mặc định Pest/PHPUnit chạy tuần tự. Chạy song song nhiều process:

bash
php artisan test --parallel

Cấu hình số process:

bash
php artisan test --parallel --processes=4

LƯU Ý

Khi chạy parallel, một số PHPUnit options (như --do-not-cache-result) có thể không khả dụng.

Reporting Test Coverage

bash
php artisan test --coverage

Chỉ định ngưỡng tối thiểu:

bash
php artisan test --coverage --min=80.3

Profiling Tests

bash
php artisan test --profile

Hiển thị 10 test chậm nhất.

Configuration Caching

Trước khi chạy test, không cache config (config:clear). Cached config có thể gây lỗi khi test.