Thử nghiệm thủ công Php thử nghiệm cụ thể

Khi nói về kiểm thử tự động hoặc kiểm thử đơn vị trong bất kỳ ngôn ngữ lập trình nào, có hai nhóm người

  • Những người không viết các bài kiểm tra tự động và nghĩ rằng chúng thật lãng phí thời gian
  • Những người làm bài kiểm tra viết và sau đó không thể tưởng tượng được công việc của họ nếu không có chúng

Vì vậy, với bài viết này, tôi sẽ cố gắng thuyết phục trại cũ nhìn vào khía cạnh khác và thấy những lợi ích, và xem việc bắt đầu với thử nghiệm tự động trong Laravel dễ dàng như thế nào

Đầu tiên, hãy nói về "tại sao" và sau đó tôi sẽ chỉ ra một vài ví dụ rất cơ bản về "làm thế nào"


Tại sao bạn cần kiểm thử tự động

Kiểm thử tự động không phức tạp. họ chỉ chạy một phần mã cho bạn và báo cáo bất kỳ lỗi nào. Đó là cách đơn giản nhất để mô tả chúng. Hãy tưởng tượng rằng bạn đang khởi chạy một tính năng mới trong ứng dụng của mình, sau đó một trợ lý rô-bốt cá nhân sẽ đi và kiểm tra chức năng mới theo cách thủ công cho bạn, đồng thời kiểm tra xem mã mới có vi phạm bất kỳ điều gì từ các tính năng cũ không

Đó là lợi ích chính. tự động kiểm tra lại tất cả các tính năng. Và nó có vẻ như là công việc phụ, nhưng nếu bạn không bảo "người máy" đó làm việc đó, thì bạn nên tự mình làm điều đó, phải không?

Với mọi tính năng mới trong ứng dụng của bạn, các thử nghiệm tự động ngày càng mang lại nhiều lợi ích hơn

  • Tính năng 1. tiết kiệm X phút kiểm tra thủ công
  • Tính năng 2. tiết kiệm gấp 2 lần số phút - cho tính năng 2 và tính năng 1 một lần nữa
  • Tính năng 3. tiết kiệm 3X phút
  • vân vân

Bạn có được ý tưởng. Hãy tưởng tượng ứng dụng của bạn sau một hoặc hai năm, với các nhà phát triển mới trong nhóm, những người thậm chí không biết "Tính năng 1" đó hoạt động như thế nào hoặc cách sao chép nó để thử nghiệm. Vì vậy, tương lai của bạn sẽ cảm ơn bạn rất nhiều vì đã viết các bài kiểm tra tự động

Tất nhiên, nếu bạn nghĩ rằng dự án của bạn là một dự án rất ngắn hạn và bạn không quan tâm nhiều đến tương lai của nó. Không, tôi tin vào ý định tốt của bạn, vì vậy hãy để tôi chỉ cho bạn cách bắt đầu thử nghiệm dễ dàng như thế nào


Thử nghiệm tự động đầu tiên của chúng tôi

Để chạy thử nghiệm tự động đầu tiên trong Laravel, bạn không cần viết bất kỳ mã nào. Yup, bạn đã đọc đúng. Mọi thứ đã được cấu hình và chuẩn bị sẵn trong bản cài đặt Laravel mặc định, bao gồm cả ví dụ cơ bản thực tế đầu tiên

Bạn có thể thử cài đặt một dự án Laravel và chạy ngay những thử nghiệm đầu tiên

laravel new project

cd project

php artisan test

Đây sẽ là kết quả trong bảng điều khiển của bạn

PASS Tests\Unit\ExampleTest

that true is true

 

PASS Tests\Feature\ExampleTest

the application returns a successful response

 

Tests: 2 passed

Time: 0.10s

Nếu chúng ta xem thư mục mặc định của Laravel

class ExampleTest extends TestCase

{

public function test_the_application_returns_a_successful_response()

{

$response = $this->get('/');

 

$response->assertStatus(200);

}

}

2, chúng ta có hai tệp

kiểm tra/Tính năng/Ví dụTest. php

class ExampleTest extends TestCase

{

public function test_the_application_returns_a_successful_response()

{

$response = $this->get('/');

 

$response->assertStatus(200);

}

}

Không cần biết bất kỳ cú pháp nào, để hiểu điều gì đang xảy ra ở đây. đang tải trang chủ và kiểm tra xem mã trạng thái HTTP có phải là "200 OK" không

Cũng lưu ý cách tên phương pháp

class ExampleTest extends TestCase

{

public function test_the_application_returns_a_successful_response()

{

$response = $this->get('/');

 

$response->assertStatus(200);

}

}

3 trở thành văn bản có thể đọc được khi xem kết quả kiểm tra, chỉ cần thay thế ký hiệu gạch dưới bằng khoảng trắng

bài kiểm tra/Đơn vị/Ví dụTest. php

class ExampleTest extends TestCase

{

public function test_that_true_is_true()

{

$this->assertTrue(true);

}

}

Điều này có vẻ hơi vô nghĩa, kiểm tra xem điều đó có đúng không? . Hiện tại, bạn cần hiểu điều gì thường xảy ra trong mọi bài kiểm tra

  • Mỗi tệp thử nghiệm trong thư mục

    class ExampleTest extends TestCase

    {

    public function test_the_application_returns_a_successful_response()

    {

    $response = $this->get('/');

     

    $response->assertStatus(200);

    }

    }

    4 là một Lớp PHP mở rộng TestCase của PHPUnit
  • Bên trong mỗi lớp, bạn có thể tạo nhiều phương thức, thường là một phương thức cho một tình huống cần kiểm tra
  • Bên trong mỗi phương pháp, có ba hành động. chuẩn bị tình huống, sau đó hành động và sau đó kiểm tra (khẳng định) xem kết quả có như mong đợi không

Về mặt cấu trúc, đó là tất cả những gì bạn cần biết, mọi thứ khác phụ thuộc vào những điều chính xác mà bạn muốn kiểm tra

Để tạo một lớp kiểm tra trống, bạn chỉ cần chạy lệnh này

php artisan make:test HomepageTest

Nó sẽ tạo ra tệp

class ExampleTest extends TestCase

{

public function test_the_application_returns_a_successful_response()

{

$response = $this->get('/');

 

$response->assertStatus(200);

}

}

5

class HomepageTest extends TestCase

{

// Replace this method with your own ones

public function test_example()

{

$response = $this->get('/');

 

$response->assertStatus(200);

}

}


Điều gì xảy ra nếu các bài kiểm tra thất bại?

Để tôi chỉ cho bạn điều gì sẽ xảy ra nếu các xác nhận kiểm tra không trả về kết quả như mong đợi

Hãy chỉnh sửa các bài kiểm tra ví dụ này

class ExampleTest extends TestCase

{

public function test_the_application_returns_a_successful_response()

{

$response = $this->get('/non-existing-url');

 

$response->assertStatus(200);

}

}

 

 

class ExampleTest extends TestCase

{

public function test_that_true_is_false()

{

$this->assertTrue(false);

}

}

Và bây giờ, nếu chúng ta chạy lại

class ExampleTest extends TestCase

{

public function test_the_application_returns_a_successful_response()

{

$response = $this->get('/');

 

$response->assertStatus(200);

}

}

6

 

FAIL Tests\Unit\ExampleTest

that true is true

 

FAIL Tests\Feature\ExampleTest

the application returns a successful response

 

---

 

Tests\Unit\ExampleTest > that true is true

Failed asserting that false is true.

 

at tests/Unit/ExampleTest.php:16

12▕ * @return void

13▕ */

14▕ public function test_that_true_is_true()

15▕ {

16▕ $this->assertTrue(false);

17▕ }

18▕ }

19▕

 

Tests\Feature\ExampleTest > the application returns a successful response

Expected response status code [200] but received 404.

Failed asserting that 200 is identical to 404.

 

at tests/Feature/ExampleTest.php:19

15▕ public function test_the_application_returns_a_successful_response()

16▕ {

17▕ $response = $this->get('/non-existing-url');

18▕

19▕ $response->assertStatus(200);

20▕ }

21▕ }

22▕

 

 

Tests: 2 failed

Time: 0.11s

Như bạn có thể thấy, có hai câu được đánh dấu là KHÔNG ĐẠT, với các giải thích bên dưới và các mũi tên đến dòng kiểm tra chính xác khiến câu khẳng định không thành công. Vì vậy, đây là cách các lỗi được hiển thị. Tiện lợi phải không nào?


Ví dụ thực tế đơn giản. Mẫu đăng ký

Hãy thực tế hơn và xem xét một ví dụ thực tế. Hãy tưởng tượng rằng bạn có một biểu mẫu và bạn cần kiểm tra nhiều trường hợp khác nhau. kiểm tra xem nó có thất bại nếu chứa đầy dữ liệu không hợp lệ hay không, kiểm tra xem nó có thành công với đầu vào chính xác không, v.v.

Bạn có biết rằng bộ khởi động Laravel Breeze chính thức đi kèm với các bài kiểm tra tính năng bên trong không?

thử nghiệm/Tính năng/Đăng kýTest. php

use App\Providers\RouteServiceProvider;

use Illuminate\Foundation\Testing\RefreshDatabase;

use Tests\TestCase;

 

class RegistrationTest extends TestCase

{

use RefreshDatabase;

 

public function test_registration_screen_can_be_rendered()

{

$response = $this->get('/register');

 

$response->assertStatus(200);

}

 

public function test_new_users_can_register()

{

$response = $this->post('/register', [

'name' => 'Test User',

'email' => '[email protected]',

'password' => 'password',

'password_confirmation' => 'password',

]);

 

$this->assertAuthenticated();

$response->assertRedirect(RouteServiceProvider::HOME);

}

}

Ở đây chúng tôi có hai bài kiểm tra trong một lớp, vì cả hai đều liên quan đến mẫu đăng ký. một đang kiểm tra xem biểu mẫu có được tải chính xác hay không và một số khác kiểm tra xem việc gửi có hoạt động tốt không

Ta làm quen với hai phương pháp kiểm tra kết quả khác, hai khẳng định nữa.

class ExampleTest extends TestCase

{

public function test_the_application_returns_a_successful_response()

{

$response = $this->get('/');

 

$response->assertStatus(200);

}

}

7 và

class ExampleTest extends TestCase

{

public function test_the_application_returns_a_successful_response()

{

$response = $this->get('/');

 

$response->assertStatus(200);

}

}

8. Bạn có thể kiểm tra tất cả các xác nhận có sẵn trong tài liệu chính thức của PHPUnit và. Hãy nhớ rằng một số xác nhận chung xảy ra trên đối tượng

class ExampleTest extends TestCase

{

public function test_the_application_returns_a_successful_response()

{

$response = $this->get('/');

 

$response->assertStatus(200);

}

}

9, trong khi những xác nhận khác kiểm tra

class ExampleTest extends TestCase

{

public function test_that_true_is_true()

{

$this->assertTrue(true);

}

}

0 cụ thể từ cuộc gọi tuyến đường

Một điều quan trọng khác là câu lệnh

class ExampleTest extends TestCase

{

public function test_that_true_is_true()

{

$this->assertTrue(true);

}

}

1, với đặc điểm, được bao gồm ở trên lớp. Nó cần thiết khi các hành động thử nghiệm của bạn có thể ảnh hưởng đến cơ sở dữ liệu, như trong ví dụ này, đăng ký thêm một mục mới trong bảng cơ sở dữ liệu

class ExampleTest extends TestCase

{

public function test_that_true_is_true()

{

$this->assertTrue(true);

}

}

2. Để làm được điều đó, bạn sẽ cần tạo một cơ sở dữ liệu thử nghiệm riêng biệt sẽ được làm mới với

class ExampleTest extends TestCase

{

public function test_that_true_is_true()

{

$this->assertTrue(true);

}

}

3, mỗi khi các thử nghiệm được thực hiện

Bạn có hai lựa chọn. tạo một cơ sở dữ liệu riêng biệt hoặc sử dụng cơ sở dữ liệu SQLite trong bộ nhớ. Cả hai đều được cấu hình trong tệp

class ExampleTest extends TestCase

{

public function test_that_true_is_true()

{

$this->assertTrue(true);

}

}

4 mặc định đi kèm với Laravel. Cụ thể, bạn cần phần này

<php>

<env name="APP_ENV" value="testing"/>

<env name="BCRYPT_ROUNDS" value="4"/>

<env name="CACHE_DRIVER" value="array"/>

<env name="MAIL_MAILER" value="array"/>

<env name="QUEUE_CONNECTION" value="sync"/>

<env name="SESSION_DRIVER" value="array"/>

<env name="TELESCOPE_ENABLED" value="false"/>

php>

Xem

class ExampleTest extends TestCase

{

public function test_that_true_is_true()

{

$this->assertTrue(true);

}

}

5 và

class ExampleTest extends TestCase

{

public function test_that_true_is_true()

{

$this->assertTrue(true);

}

}

6 được bình luận?

Trong thử nghiệm này, chúng tôi khẳng định rằng người dùng được xác thực thành công và được chuyển hướng đến đúng trang chủ, nhưng chúng tôi cũng có thể kiểm tra dữ liệu thực tế trong cơ sở dữ liệu

Ngoài mã này

PASS Tests\Unit\ExampleTest

that true is true

 

PASS Tests\Feature\ExampleTest

the application returns a successful response

 

Tests: 2 passed

Time: 0.10s

0

Chúng ta cũng có thể sử dụng và làm một cái gì đó như thế này

PASS Tests\Unit\ExampleTest

that true is true

 

PASS Tests\Feature\ExampleTest

the application returns a successful response

 

Tests: 2 passed

Time: 0.10s

1

Một ví dụ thực tế khác. mẫu đăng nhập

Hãy xem thêm một thử nghiệm từ Laravel Breeze

kiểm tra/Tính năng/Xác thựcTest. php

PASS Tests\Unit\ExampleTest

that true is true

 

PASS Tests\Feature\ExampleTest

the application returns a successful response

 

Tests: 2 passed

Time: 0.10s

2

Đây là về hình thức đăng nhập. Logic tương tự như đăng ký, phải không? . Vì vậy, logic chung là bạn nên kiểm tra cả hai trường hợp. khi mọi thứ diễn ra tốt đẹp và khi chúng thất bại

Ngoài ra, những gì bạn thấy trong thử nghiệm này là việc sử dụng. Laravel tạo một người dùng giả mạo (một lần nữa, trên cơ sở dữ liệu thử nghiệm được làm mới của bạn) và sau đó cố gắng đăng nhập, với thông tin đăng nhập chính xác hoặc không chính xác

Một lần nữa, Laravel tạo ra nhà máy mặc định với dữ liệu giả mạo cho mô hình

class ExampleTest extends TestCase

{

public function test_that_true_is_true()

{

$this->assertTrue(true);

}

}

7, ngay lập tức

cơ sở dữ liệu/nhà máy/UserFactory. php

PASS Tests\Unit\ExampleTest

that true is true

 

PASS Tests\Feature\ExampleTest

the application returns a successful response

 

Tests: 2 passed

Time: 0.10s

3

Thấy chưa, có bao nhiêu thứ được chuẩn bị bởi chính Laravel, vì vậy chúng ta có thể dễ dàng bắt đầu thử nghiệm không?

Vì vậy, nếu chúng ta chạy

class ExampleTest extends TestCase

{

public function test_the_application_returns_a_successful_response()

{

$response = $this->get('/');

 

$response->assertStatus(200);

}

}

6 sau khi cài đặt Laravel Breeze, chúng ta sẽ thấy một cái gì đó như thế này

PASS Tests\Unit\ExampleTest

that true is true

 

PASS Tests\Feature\ExampleTest

the application returns a successful response

 

Tests: 2 passed

Time: 0.10s

4

Kiểm tra tính năng VS Kiểm tra đơn vị VS Khác

Bạn đã xem các thư mục con

class ExampleTest extends TestCase

{

public function test_that_true_is_true()

{

$this->assertTrue(true);

}

}

9 và

php artisan make:test HomepageTest

0. sự khác biệt giữa chúng là gì?

Trên toàn cầu, ngoài hệ sinh thái Laravel/PHP, có nhiều loại thử nghiệm tự động khác nhau. Bạn có thể tìm thấy các thuật ngữ như

  • bài kiểm tra đơn vị
  • kiểm tra tính năng
  • kiểm tra tích hợp
  • kiểm tra chức năng
  • Thử nghiệm đầu cuối
  • nghiệm thu
  • kiểm tra khói
  • vân vân

Nghe có vẻ phức tạp và sự khác biệt thực tế giữa các loại thử nghiệm đó đôi khi bị mờ. Đó là lý do tại sao Laravel đã đơn giản hóa tất cả những thuật ngữ khó hiểu đó và nhóm chúng thành hai. đơn vị/tính năng

Nói một cách đơn giản, các bài kiểm tra tính năng cố gắng chạy các tính năng thực tế của ứng dụng của bạn. lấy URL, gọi API, bắt chước hành vi chính xác như điền vào biểu mẫu. Các bài kiểm tra tính năng thường thực hiện điều tương tự hoặc tương tự như bất kỳ người dùng dự án nào sẽ thực hiện theo cách thủ công trong cuộc sống thực

Bài kiểm tra đơn vị có hai ý nghĩa. Nói chung, bạn có thể thấy rằng bất kỳ thử nghiệm tự động nào được gọi là "kiểm tra đơn vị" và toàn bộ quá trình có thể được gọi là "kiểm tra đơn vị". Nhưng trong ngữ cảnh của tính năng so với đơn vị, quá trình này là về việc kiểm tra một đơn vị mã không công khai cụ thể của bạn, trong sự cô lập. Ví dụ: bạn có một số lớp Laravel với một phương thức tính toán thứ gì đó, chẳng hạn như tổng giá của đơn đặt hàng với các tham số. Vì vậy, bài kiểm tra đơn vị của bạn sẽ khẳng định nếu phương thức đó (đơn vị mã) trả về kết quả chính xác, với các tham số khác nhau

Để tạo bài kiểm tra đơn vị, bạn cần thêm cờ

PASS Tests\Unit\ExampleTest

that true is true

 

PASS Tests\Feature\ExampleTest

the application returns a successful response

 

Tests: 2 passed

Time: 0.10s

5

Mã được tạo giống với bài kiểm tra đơn vị mặc định từ Laravel

PASS Tests\Unit\ExampleTest

that true is true

 

PASS Tests\Feature\ExampleTest

the application returns a successful response

 

Tests: 2 passed

Time: 0.10s

6

Như bạn có thể thấy, không có

php artisan make:test HomepageTest

1, và đó là một trong những định nghĩa phổ biến nhất của bài kiểm tra đơn vị. nó không chạm vào cơ sở dữ liệu, nó hoạt động như một "hộp đen", cách ly với ứng dụng đang chạy

Cố gắng bắt chước ví dụ tôi đã đề cập trước đó, hãy tưởng tượng chúng ta có một lớp dịch vụ

php artisan make:test HomepageTest

2

ứng dụng/Dịch vụ/OrderPriceService. php

PASS Tests\Unit\ExampleTest

that true is true

 

PASS Tests\Feature\ExampleTest

the application returns a successful response

 

Tests: 2 passed

Time: 0.10s

7

Sau đó, bài kiểm tra đơn vị có thể trông giống như thế này

PASS Tests\Unit\ExampleTest

that true is true

 

PASS Tests\Feature\ExampleTest

the application returns a successful response

 

Tests: 2 passed

Time: 0.10s

8

Theo kinh nghiệm cá nhân của tôi với các dự án Laravel, phần lớn các bài kiểm tra là kiểm tra Tính năng, không phải kiểm tra Đơn vị. Trước tiên, bạn cần kiểm tra xem ứng dụng của mình có hoạt động không, cách người dùng thực sẽ sử dụng ứng dụng đó

Tiếp theo, nếu bạn có các phép tính hoặc logic đặc biệt mà bạn có thể xác định là một đơn vị, với các tham số, bạn có thể tạo các bài kiểm tra đơn vị cụ thể cho điều đó

Đôi khi, viết bài kiểm tra yêu cầu thay đổi chính mã và cấu trúc lại nó để "dễ kiểm tra" hơn. tách các đơn vị thành các lớp hoặc phương thức đặc biệt


Khi nào/Làm thế nào để chạy thử nghiệm?

Việc sử dụng thực tế của

class ExampleTest extends TestCase

{

public function test_the_application_returns_a_successful_response()

{

$response = $this->get('/');

 

$response->assertStatus(200);

}

}

6 đó là gì, khi nào bạn nên chạy nó?

Có nhiều cách tiếp cận khác nhau, tùy thuộc vào quy trình làm việc của công ty bạn, nhưng thông thường, bạn cần đảm bảo rằng tất cả các thử nghiệm đều "xanh" (nghĩa là không có lỗi) trước khi bạn đẩy các thay đổi mã mới nhất của mình vào kho lưu trữ

Vì vậy, bạn làm việc cục bộ với nhiệm vụ của mình và khi bạn cảm thấy như mình đã hoàn thành, bạn chạy thử nghiệm để đảm bảo rằng bạn không vi phạm bất cứ điều gì. Hãy nhớ rằng, mã của bạn có thể gây ra lỗi không chỉ trong logic của bạn mà còn vô tình phá vỡ một số hành vi khác trong mã của người khác đã viết từ lâu

Nếu chúng ta tiến thêm một bước nữa, có thể tự động hóa rất nhiều thứ. Với các công cụ CI/CD khác nhau, bạn có thể chỉ định các thử nghiệm của mình sẽ được thực thi bất cứ khi nào ai đó đẩy các thay đổi vào một nhánh Git cụ thể hoặc trước khi hợp nhất mã vào nhánh sản xuất. Quy trình làm việc đơn giản nhất là sử dụng Github Actions, tôi có một video riêng chứng minh điều đó


Bạn nên kiểm tra những gì?

Có nhiều ý kiến ​​khác nhau về mức độ lớn của cái gọi là "phạm vi thử nghiệm" của bạn. bạn có nên kiểm tra mọi hoạt động và mọi trường hợp có thể xảy ra trên mọi trang hay chỉ giới hạn công việc của bạn ở những phần quan trọng nhất

Thật vậy, đây là điểm tôi đồng ý với việc mọi người đổ lỗi cho kiểm thử tự động làm mất nhiều thời gian hơn là mang lại lợi ích thực tế. Điều đó có thể xảy ra nếu bạn viết bài kiểm tra cho từng chi tiết. Điều đó nói rằng, nó có thể được yêu cầu bởi dự án của bạn. câu hỏi chính là "giá của lỗi tiềm ẩn là bao nhiêu"

Nói cách khác, bạn cần ưu tiên các nỗ lực thử nghiệm của mình với câu hỏi "Điều gì sẽ xảy ra nếu mã này không thành công?" . Sau đó, nếu chức năng vai trò/quyền của bạn bị hỏng, thì đó là một vấn đề bảo mật lớn

Tôi thích cách Matt Stauffer diễn đạt nó trong một hội nghị. "Bạn cần phải kiểm tra những thứ đó trước, nếu chúng thất bại, bạn sẽ bị đuổi việc". Tất nhiên, đó là một cường điệu, nhưng bạn có ý tưởng. kiểm tra những điều quan trọng đầu tiên. Và sau đó là chức năng khác, nếu bạn có thời gian cho nó


CÔN TRÙNG. Giải pháp thay thế phổ biến mới cho PHPUnit

Tất cả các ví dụ trên đều dựa trên công cụ kiểm tra mặc định của Laravel. PHPUnit. Nhưng qua nhiều năm, các công cụ khác đã xuất hiện trong hệ sinh thái và một trong những công cụ phổ biến mới nhất là PEST. Được tạo bởi nhân viên chính thức của Laravel, Nuno Maduro, nó có mục tiêu đơn giản hóa cú pháp, giúp viết mã cho các bài kiểm tra thậm chí còn nhanh hơn

Dưới vỏ bọc, nó chạy trên PHPUnit, như một lớp bổ sung, chỉ cố gắng giảm thiểu một số phần lặp lại mặc định của mã PHPUnit

Hãy xem một ví dụ. Bạn có nhớ lớp kiểm tra Tính năng mặc định trong Laravel không?

PASS Tests\Unit\ExampleTest

that true is true

 

PASS Tests\Feature\ExampleTest

the application returns a successful response

 

Tests: 2 passed

Time: 0.10s

9

Bạn có biết bài kiểm tra tương tự sẽ như thế nào với PEST không?

class ExampleTest extends TestCase

{

public function test_the_application_returns_a_successful_response()

{

$response = $this->get('/');

 

$response->assertStatus(200);

}

}

0

Vâng, MỘT dòng mã, và thế là xong. Vì vậy, mục tiêu của PEST là loại bỏ chi phí hoạt động của

  • Tạo các lớp và phương thức cho mọi thứ;
  • Mở rộng TestCase;
  • Đặt các hành động trên các dòng riêng biệt - trong PEST, bạn có thể xâu chuỗi chúng

Để tạo bài kiểm tra PEST trong Laravel, bạn cần chỉ định một cờ bổ sung

class ExampleTest extends TestCase

{

public function test_the_application_returns_a_successful_response()

{

$response = $this->get('/');

 

$response->assertStatus(200);

}

}

1

Tại thời điểm viết bài viết này, PEST khá phổ biến đối với các nhà phát triển Laravel, nhưng việc sử dụng công cụ bổ sung này và tìm hiểu cú pháp của nó hay không là tùy thuộc vào sở thích cá nhân của bạn, bên cạnh PHPUnit nổi tiếng.


Vì vậy, đó là tất cả những gì bạn cần biết về những điều cơ bản của kiểm thử tự động. Từ đây, bạn có thể lựa chọn tạo bài kiểm tra nào và cách chạy chúng trong dự án của mình

Làm cách nào để chạy thử nghiệm 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 để chạy một trường hợp thử nghiệm cụ thể trong PHPUnit?

Để chạy một Trường hợp kiểm tra PHPUnit duy nhất trên một phương thức trong tệp. .
Mở tệp Trường hợp kiểm tra PHPUnit của bạn trong trình chỉnh sửa
Đặt con trỏ vào phương pháp bạn muốn kiểm tra, nhấp chuột phải và chọn Run As. Kiểm tra đơn vị PHP

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

Bạn có thể chạy tất cả các kiểm tra trong một thư mục bằng cách sử dụng tệp nhị phân PHPUnit được cài đặt trong thư mục nhà cung cấp của bạn. Bạn cũng có thể chạy thử nghiệm đơn lẻ bằng cách cung cấp đường dẫn đến tệp thử nghiệm . Bạn sử dụng cờ --verbose để biết thêm thông tin về trạng thái kiểm tra.

Kiểm tra đơn vị so với kiểm tra tính năng là gì?

Bài kiểm tra đơn vị đảm bảo rằng mã riêng lẻ i. e. đoạn mã nhỏ hoạt động tốt. Kiểm tra tích hợp được thực hiện để đảm bảo rằng - khi một hoặc nhiều đơn vị được tích hợp, nó sẽ hoạt động tốt. Kiểm tra tính năng là kiểm tra các tính năng giống như một người dùng thực tế. Giống như cách người dùng thực tế sẽ sử dụng tính năng này