UnitTest là gì ? Những điều cần biết về Unit Test trong Laravel – PHP

Chúng tôi rất vui mừng chia sẻ kiến thức về từ khóa Phpunit la gi và hy vọng rằng nó sẽ hữu ích cho bạn đọc. Bài viết tập trung trình bày ý nghĩa, vai trò và ứng dụng của từ khóa này trong việc tối ưu hóa nội dung trang web và chiến dịch tiếp thị trực tuyến. Chúng tôi cung cấp các phương pháp tìm kiếm, phân tích và lựa chọn từ khóa phù hợp, cùng với các chiến lược và công cụ hữu ích. Hy vọng rằng thông tin mà chúng tôi chia sẻ sẽ giúp bạn xây dựng chiến lược thành công và thu hút lưu lượng người dùng. Xin chân thành cảm ơn sự quan tâm và hãy tiếp tục theo dõi blog của chúng tôi để cập nhật những kiến thức mới nhất.

Chào mọi người, chắc hẵn mỗi lập trình viên tất cả chúng ta đều không thể không biết tới việc kiểm thử. Kiểm thử là một công việc không thể thiếu trong quá trình phát triển phần mềm. Ban sơ, mình khi lao vào lập trình cũng chỉ nghĩ rằng việc kiểm tra lại tính xác thực của Khóa học hay phát hiện những lỗi không mong muốn chỉ dành riêng cho QA/Tester, còn người phát triển chỉ có tập trung vào việc viết code để sao cho chạy ổn định. Nhưng ý nghĩ của mình hoàn toàn sai trái khi mở màn đi làm việc và xúc tiếp với dự án bài bản, khi mà việc testing sẽ song song với việc tất cả chúng ta lập trình cũng như do chính tất cả chúng ta thực hiện mặc dù có phương pháp có đôi chút khác biệt so với việc kiểm thử của QA hay Tester.

Bạn Đang Xem: UnitTest là gì ? Những điều cần biết về Unit Test trong Laravel – PHP

Việc viết test là rất quan trọng ngay trong khi tất cả chúng ta mở màn làm dự án, vì chỉ khi tất cả chúng ta kiểm soát được từng thành phần nhỏ trong những đoạn code của mình thì tất cả chúng ta mới có thể phát triển ứng dụng, kiểm soát lỗi một cách dễ dàng và thời kì đấy sẽ rút ngắn lại hơn nữa rất nhiều so với việc code không được viết test. Đơn giản việc test cho từng dòng code của chính tất cả chúng ta tự viết ra, khi có lỗi sẽ biết và khoanh vùng được lỗi đấy ra ngay để fix tránh tình trạng mất quá nhiều thời kì vào việc tìm lỗi thay vì xây dựng phát triển ứng dụng. Có bug là fix luôn chứ không đợi đến QA )

Vậy Unit Test là gì ? vì sao những lập trình viên đều rất cần được tìm hiểu cũng như vận dụng nó trong dự án của mình.

Unit được dịch là đơn vị. Tức là kiểm thử ở tầm mức đơn vị, mà mỗi đơn vị ở đây đây chính là các Method, function, class. Viết kiểm thử cho những function, class này giúp tất cả chúng ta có thể nắm rõ được luồng xử lý của từng thành phần nhỏ để từ đó có thể yên tâm xây dựng những chức năng to ra thêm từ chúng.

  • Unit Test giúp tất cả chúng ta tiết kiệm ngân sách và chi phí thời kì cũng như ngân sách trong việc phát triển ứng dụng.
  • Unit Test giúp tất cả chúng ta rất dễ hiểu luồng xử lý trong code và từ đó có thể dễ dàng nâng cấp dễ dàng.
  • Unit Test chất lượng sản phẩm và dịch vụ có thể như thể một tài liệu cho dự án.
  • Qua Unit Test tất cả chúng ta có thể tách các function riêng lẻ vừa dễ dàng cho việc kiểm thử cũng như dễ dàng cho việc tái sử dụng.

Một số dụng cụ cho việc sử dụng Unit Test:

  • Junit: Junit là dụng cụ kiểm thử miễn phí sử dụng cho tiếng nói Java.
  • NUnit: NUnit được sử dụng rộng rãi trong Kiểm thử đơn vị và với tất cả những tiếng nói .net. Nó là một dụng cụ mã nguồn mở, được chấp nhận viết các kịch bản một cách thủ công. Nó cũng tương trợ việc test dựa trên các tài liệu macó thể chạy song song.
  • EMMA: EMMA là một bộ dụng cụ mã nguồn mở để phân tích và văn bản báo cáo mã được viết bằng tiếng nói Java. Emma tương trợ các kiểu coverage như method, line, basic block. Nó dựa trên Java nên không phụ thuộc thư viện phía ngoài và có thể truy cập mã nguồn.
  • PHPUnit: PHPUnit là một dụng cụ kiểm tra đơn vị cho lập trình viên PHP. PHPUnit sử dụng những thành phần nhỏ để kiểm tra và kiểm tra chúng một cách riêng biệt. Phương tiện này cũng được chấp nhận các nhà phát triển sử dụng các phương pháp xác nhận xác định trước để khẳng định rằng mạng lưới hệ thống hoạt động theo một cách nhất định như hoạt động đúng hay là không.

UnitTest sẽ có những trạng thái đây chính là :

  • Fail : Lỗi khi test
  • Ignore : Tạm ngừng thực hiện
  • Pass: Test không bị lỗi và hoạt động như ý muốn.

Một Unit Test tốt cần đảm bảo các tham dự sau:

  • Mỗi UnitTest phải hoàn toàn độc lập và không liên quan đến những thành phần khác. Trong trường hợp thành phần khác có thay đổi thì UnitTest đấy cũng sẽ không còn bị ảnh hưởng tác động.
  • Tại một thời lăn tay kiểm tra một đơn vị.
  • Khi nâng cấp hoặc thay đổi hay viết mới một thành phần nào đó phải đảm bảo viết UnitTest cho chúng.
  • Việc test sẽ không còn được gây ảnh hưởng tác động vào cơ sở tài liệu thật.

Xem Thêm : Arc Anime Là Gì – Arc Là Viết Tắt Của Từ Gì

Bài hôm nay mình sẽ tất cả chúng ta cũng sẽ tìm hiểu qua về PHPUnit là dụng cụ chính cho việc viết và chạy UnitTest đã tích hợp sẵn trong Laravel.

Trong laravel, để viết test tất cả chúng ta sẽ viết ở trong thư mục test

Giảng giải các thư mục :

  • tests: chứa code cho việc kiểm thử ứng dụng
  • tests/Browser: chưa các file dùng để làm test cho view, tương tác với trình duyệt.
  • tests/Feature: chứa các file feature test
  • tests/Unit: chứa các file unit test
  • TestCase: là 1 trong bootstrap file để thiết lập môi trường tự nhiên Laravel cho những tests
  • phpunit.xml là file cấu hình cho PHPUnit

Quy tắc tạo file test:

  • Tên của class test sẽ sở hữu được cấu trúc hậu tố thêm từ Test . vd: PostControllerTest
  • Tạo đường dẫn file test có cấu trúc giống với đường dẫn file thật: Ví dụ tôi muốn test một Controller và có đường dẫn thư mục: Http/Controllers/PostController.php thì tất cả chúng ta sẽ tạo file unit test có cấu trúc đường dẫn là : tests/Unit/Http/Controllers/PostControllerTest.php.

Những thứ tất cả chúng ta cần test trong Laravel:

  • Controllers
  • Models
  • View
  • Repository
  • Auth policies…

Để tạo file unit test:

php artisan make:test UserTest -unit

Khi tạo một file test tất cả chúng ta sẽ sử dụng 2 method setUp và tearDown. Vậy 2 method đấy dùng để làm làm gì? Đơn giản setUp method sẽ là nơi để tất cả chúng ta tạo môi trường tự nhiên sẵn sàng chuẩn bị trước lúc test như tạo một user có quyền admin chẳng hạn, hay sử dụng một model sẵn sàng chuẩn bị cho việc test. method này sẽ chạy trước mỗi function test của tất cả chúng ta.

Như vậy các bạn cũng sẽ đoán được tearDown để làm gì đúng không nhỉ. Nó đây chính là method để tất cả chúng ta thu vén những môi trường tự nhiên đã thiết lập trong lúc setUp.

Assertions

Xem Thêm : Cách đăng tin tuyển dụng miễn phí trên Glassdoor 

Assertions: Dịch ra là khẳng định. Tức là những method assertions sẽ giúp tất cả chúng ta khẳng định xem output có đúng thứ mà tất cả chúng ta mong muốn không.

Một số assertion thường gặp như:

  • assertEquals: hàm này sẽ thực hiện xem 2 kết quả có bằng nhau không
  • assertInstanceOf: Hàm nãy sẽ thực hiện xác định kết quả so sánh có đúng intance mong muốn hay là không
  • assertArrayHasKey: Thực hiện xem kết quả cần so sánh (mảng) bên trong có key cho trước hay là không.
  • assertTrue: Thực hiện xem kết quả cần so sánh có bằng true hay là không.
  • assertFalse: Thực hiện xem kết quả cần so sánh có bằng true hay là không.
  • assertIsArray: Thực hiện xem kết quả cần so sánh liệu có phải là một mảng hay là không.
  • và còn một số assert khác mọi người vào doc của laravel để tìm hiểu thêm nhé.

Ví dụ test một model trong laravel:

<?php namespace AppModels; use IlluminateContractsAuthMustVerifyEmail; use IlluminateFoundationAuthUser as Authenticatable; use IlluminateNotificationsNotifiable; class User extends Authenticatable { use Notifiable; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ ‘username’, ‘password’, ‘name’, ‘avatar’, ’email’, ‘address’, ‘phone_number’, ‘role_id’, ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ ‘password’, ‘remember_token’, ]; /** * The attributes that should be cast to native types. * * @var array */ protected $casts = [ ’email_verified_at’ => ‘datetime’, ]; public function role() { return $this->belongsTo(Role::class); }

Ở file test:

<?php namespace TestsUnitModels; use AppModelsBooking; use AppModelsBookingDetail; use AppModelsComment; use AppModelsRating; use AppModelsRole; use AppModelsUser; use IlluminateDatabaseEloquentRelationsBelongsTo; use IlluminateDatabaseEloquentRelationsHasMany; use TestsTestCase; class UserTest extends TestCase { protected $user; protected function setUp(): void { parent::setUp(); $this->user = new User(); } protected function tearDown(): void { parent::tearDown(); unset($this->user); } public function test_table_name() { $this->assertEquals(‘users’, $this->user->getTable()); } public function test_fillable() { $this->assertEquals([ ‘username’, ‘password’, ‘name’, ‘avatar’, ’email’, ‘address’, ‘phone_number’, ‘role_id’, ], $this->user->getFillable()); } public function test_hidden() { $this->assertEquals([ ‘password’, ‘remember_token’ ], $this->user->getHidden() ); } protected function test_belongsTo_relation($related, $foreignKey, $ownerKey, $model, $relationName) { $relation = $model->$relationName(); $this->assertInstanceOf(BelongsTo::class, $relation); $this->assertInstanceOf($related, $relation->getRelated()); $this->assertEquals($ownerKey, $relation->getOwnerKeyName()); $this->assertEquals($foreignKey, $relation->getForeignKeyName()); } public function test_role_relation() { $this->test_belongsTo_relation( Role::class, ‘role_id’, ‘id’, $this->user, ‘role’ ); } }

Cuối cùng tất cả chúng ta sẽ chạy câu lệnh artisan:

php artisan test

Phía trên tôi đã test cho một Model User có relation với Role. Trong file test này một số function như getFillable() hay getHidden() dùng để làm test cho tính chất fillable hay hidden trong Laravel. Ngoài ra để test relation, tôi đã dùng assertInstanceOf để test quan hệ trong user có đúng là instance của BelongsTo trong Laravel hay là không cũng test OwnerKeyName hay ForeignKeyName như trên.

Đọc xong nội dung bài viết này chắc hẳn các bạn đã nắm được những tri thức cơ bản của Unit Test. Vơi những tri thức này khi thao tác làm việc tất cả chúng ta cần phải tìm hiểu thêm những phương thức có sẵn để test trong tài liệu chính của mỗi dụng cụ. Việc test song song khi code là một việc rất quan trọng và cấp thiết đảm bảo cho việc phát triển ứng dụng một cách chuyên nghiệp và tiết kiệm ngân sách và chi phí công sức của con người, thời kì. Mong nội dung bài viết có thể giúp ích cho mọi người một tí nào đấy trong công việc của mình. Xin cảm ơn các bạn và hứa vào một trong những ngày nhanh nhất!

You May Also Like

About the Author: v1000