Laravel TDD Unit Testing

Laravel: Unit Test/TDD cho người mới bắt đầu

Hi các bạn,

Obviously, TDD tất nhiên là cực kỳ project của bạn, nó giúp devs tự tin và tăng độ tin cậy hơn. Cũng như với những applications mà có độ quan trọng cao thì ko thể thiếu được testing.

Vậy nên, Unit Testing + QA Testing (manual, automated,…) = Perfect match

Những cái khó khăn khi mà ta Google về Unit Testin g để học

Mình biết, nhiều ng` rất muốn học về unit testing, cách viết unit tests nhưng chưa ra tới chợ đã về vì biết rõ chợ bán toàn hàng…. lởm.

1000% chỗ nào cũng vậy, đều chỉ nói ra những cái cơ bản mà dường như ai cũng biết:

  • Viết test đi, cần viết test này nè, test kia nè
  • Test đơn giản thôi, viết function rồi assert nè
    • a+b=c rồi test func(1,1) == 2 ??? lol
  • assertTrue(true) (lol)

Nhiều cái tấu hài lắm nhỉ, vậy nên học viết Unit Tests mà Google thì thôi, chỉ muốn nghỉ rồi tại quay về con đường no-test high-risk.

Thà vậy thì khỏi đăng bài còn hơn, vì chỉ viết mấy  cái chung chung, ở mức độ kiến thức đọc cho vui và ko đem lại KQ gì nhiều.

Để học cách viết Unit Tests rồi dần dần tiến tới TDD, cách tốt nhất là phải có 1 Real-world project để tham khảo và tốt nhất là hand-on practice trên cái base đó.

Gặp KivaNote

Repository: https://github.com/sethsandaru/kiva-laravel-tdd

KivaNote là 1 project nhỏ mà mình tạo ra để chia sẻ cho các bạn cách viết unit tests:

  • Từ dễ đến khó
  • Show ra những chỗ các bạn cần test cho Laravel Application của bạn

KivaNote là một API Application, cung cấp các APIs cho 1 app note vui vẻ: đăng nhập, tạo và quản lý note, up hình ảnh (lưu trữ local hoặc ImgBB)

Chạy test?

php artisan test hoặc composer test

Composer test là helper command mình đã add sẵn vào composer.json

Tests gì đi kèm?

  • Unit Test: nơi bạn viết test cho các methods của Classes
  • Quick Test: tương tự như unit nhưng chủ yếu là mocking data rồi test trực tiếp với method (ko tương tác với services nào cả, kể cả DB)
  • Feature Test: nơi bạn viết test để test những Endpoints để đảm bảo nó return đúng đủ khi mình make 1 request

Ngoài ra, KivaNote cũng có integrated với ImgBB và show cho các bạn cách viết test cho External Service (service này hơi dễ, sắp tới mình sẽ kiếm 1 API Service khác kho khó hơn để integrate và viết test)

Nên bắt đầu từ đâu?

  • Clone project về
  • Check routes api.php và dần đi vào Controllers, Requests để hiểu flow cơ bản
  • Check sơ qua các Services
  • Sau đó qua đọc Tests, bắt đầu từ Quick, Unit, Feature

Ta nên làm gì tiếp

Từ creative của bạn, hãy viết tiếp những endpoints để phát triển nhiều hơn các tính năng cho KivaNote, sau đó viết tests cho các features mà bạn đã tạo ra.

Đó là một cách tốt nhất để improve hơn nữa, vì học là phải đi đôi với hành.

Những features mình có thể suggest:

  • Integrate với 1 API Image (ngoài ImgBB)
  • Giới hạn số lượng note có thể tạo hằng ngày
  • Premium system (vd free – 10 notes/ngày, pro  – 100/ngày, pro max – unlimited)
  • Payment for premium
    • Integrate với Paypal hoặc Stripe

Lời kết

Chúc các bạn học và viết test vui vẻ nhé!!

facebook
Seth Phát

Seth Phát

Mình là Phát - biệt danh Seth Phát. Hiện đang là một Sr. Full-Stack Engineer. Mình là một người yêu thích và đam mê lập trình và hiện tại đang theo về phần Web là chủ yếu. Mạnh Back-end và khá Front-end, vẫn đang theo đều cả 2 :v. Còn gì bằng khi được làm những thứ mà mình yêu thích, đam mê ;)

Leave a Reply

Your email address will not be published. Required fields are marked *

Bình luận qua Facebook