من در این نوشته راجع به چند مساله مهم صحبت میکنم. و سرنخ میدم. ۱- تست نویسی ۲- یادگیری انواع تست ۳- از همه مهم تر چطوری یک روز برنامه نویسی مون رو تبدیل کنیم به یک ماه برنامه نویسی؟
تست نویسی سناریو میخواهد.
شما برای یک تیکه کد یک تابع یک کلاس یک متد تست مینویسید. که چی که کامل باشه.
وقتی کامل شد...
اگر کامل تر بشه تست های قبلی به درد تون میخوره
اگر تغییر کنه باید همه چیز رو از اول بنویسید.
این منطق تست نویسی رو زیر سوال نمیبره. هر تغییری مستلزم هزینه است.
اما تست نویسی در لاراول لذت بخش است. همونطور که در اسپرینگ بوت لذت بخش است. به شرط اینکه به صورت دقیق سناریوی تحویلی مشخص باشد.
اگر تحقیق و توسعه باشد و مشخص نباشد بارها و بارها باید با تغییر معماری یا تغییر سناریو کل کد های تست دور ریخته شود
راه حل ساده است. تست های کوچک سریع. که هم سریع نوشته میشود و هم سریع تغییر کند.
بله. هم میشه
خیر و هم نمیشه.
تست های یونیت و کوچک در حد تست ساده دو سه حالت از یک متد از یک کلاس
https://laravel.com/docs/10.x/http-tests
تست هایی که روی وب سرویس ها هستند تا ساده هستند و rest و کوچک سریع هستند از یک جایی بعضی سناریو ها میتواند پیچیده تر شود و میتواند تست هم ندداشته باشد. یا داشته باشد به خودتان بستگی دارد.
تست های به هم پیوسته برای تست یک سناریوی کامل در یک فیچر که ارایه شده است
سیدر بنویس و فکتوری که بره ی چیزهایی رو در دیتابیس بریزه. بعدش یونیت متد ها رو تست کن بعدش با فیچر کامل ترش کن. بعدش ببین منطق دیتابیس برای نوشتن و خواندن داره همه جا درست عمل میکنه
دونستن کاربرد هر یک از موارد بالا کمک میکنه بتونید تست های کامل تری طراحی کنید.
خواندن تست های دیگران در گیت هاب
github.com/search
این فیچر جستجوی گیت هاب رو دست کم نگیرید.
من همیشه بعد از نوشتن کد هام. حتما تیکه تیکه کد که نوشتم رو جستجو میکنم ببینم ایده های بهتر چیست؟
این کار میتونه هم قبل کد نوییسی هم بعد کدنویسی انجام بشه
برای مثال:
من وقتی یک پکیج نصب میکنم حتما ایده های برنامه نویسان دیگر رو رصد میکنم
مثلا پکیج الستیکس که نصب میشه چی میشه؟
معلومه دیگه
"require": {
"php": "^8.1",
"barryvdh/laravel-debugbar": "^3.12",
"barryvdh/laravel-ide-helper": "^3.0",
"elasticsearch/elasticsearch": "^8.12",
یک همچین چیزی میره در فایل composer.json پروژه لاراول
خب با امکانات جستجویی که در سایت گیت هاب داریم خیلی راحت میتونیم جستجو رو تارگت گذاری کنیم و به کد هایی برسیم قوی خوانا با معماری خوب که ما رو یک هفته شاید یک ماه جلو میاندازه.
با جستجو و خواندن و مرور کد های دیگران.
هر فیچر و بخش و کلاس و متد که مینویسید جستجو کنید کد های دیگران ی نگاه بندازید
یک مقاله خوب
https://geshan.com.np/blog/2021/01/phpunit-assertions/
موفق باشید.