Hướng dẫn dùng computing abbreviation trong PHP

Trong bài đầu tiên của series này, chúng ta đã đi qua cách cài đặt và cấu hình PHPUnit cho 1 project PHP, một số conventions khi thực hiện Unit test trong PHP và trải nghiệm với unit test đầu tiên. Trong bài này, chúng ta sẽ tìm hiểu một số khái niệm quan trọng trong unit test và đi vào thực hành nhiều hơn.

ASSERTIONS

Assertion là gì? Theo định nghĩa từ Wikipedia:

In computer programming, an assertion is a statement that a predicate [Boolean-valued function, a true–false expression] is expected to always be true at that point in the code

Assertion chỉ đơn giản là 1 câu lệnh nhằm mục đích xác nhận một khẳng định là luôn đúng tại đoạn code đó. Hiểu theo cách khác, Assertion định nghĩa điều bạn muốn nó xảy ra [VD: Tôi muốn hàm này trả về false => tôi assert return value là false, tôi muốn hàm kia trả về mảng có chứa 5 phần tử => tôi assert array size = 5, tôi muốn kết quả thu được lơn hơn 100,...]

Assertion trả về true thì sẽ pass unit test, ngược lại sẽ fail.

Trong ví dụ đầu tiên:

public function testTrueIsTrue[]
{
    $foo = true;
    $this->assertTrue[$foo];
}

Chúng ta đã assert rằng true là true [ if [true == true] ]. Không có gì đặc biệt ở đây, điều bạn thấy là điều bạn nhận được với assertions.

Nếu chúng ta assert rằng false là true, chúng ta sẽ nhận được 1 test fail:

public function testTrueIsTrue[]
{
    $foo = false;
    $this->assertTrue[$foo];
}

Nhưng nếu chúng ta muốn assert rằng false là false [ if [false == false] ] thì sao?

public function testFalseIsFalse[]
{
    $foo = false;
    $this->assertFalse[$foo];
}

Unit test này được pass vì câu lệnh assertion của chúng ta trả về true, mặc dù cho phương thức được gọi là assertFalse[].

PHPUnit cung cấp rất nhiều assertions được liệt kê tại đây. Bạn không phải sử dụng tất cả. Phần lớn bạn sẽ sử dụng các assertions assertArrayHasKey[], assertEquals[], assertFalse[], assertSame[]assertTrue[], chúng ta sẽ tập trung vào các assertion này trước. Các hàm PHPUnit Assertions cũng giống như 1 hàm bình thường và giá trị trả về là true hoặc false, bạn hoàn toàn có thể tự viết các assertion, tôi sẽ đề cập phần này sau.

Unit test [có ích] đầu tiên

Unit test có ích đầu tiên của chúng ta sẽ là unit test cho một hàm chuyển đổi từ string thông thường sang dạng url slug, ví dụ hàm này sẽ biến đổi chuỗi: "This string will be sluggified" sang "this-string-will-be-sluggified".

Tạo file src/URL.php:

Chủ Đề