<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های محراب محمدزاده</title><link>https://virgool.ir/feed/@mehrabx</link><description>دوستدار کد، دوستدار طبیعت، آروم</description><language>fa</language><pubDate>2026-11-12 10:00:54</pubDate><image><url>https://files.virgool.ir/upload/users/2227920/avatar/onuhjI.jpg</url><title>محراب محمدزاده</title><link>https://virgool.ir/@mehrabx</link></image><item><title>چگونه تاریخ‌های متغیر در php و Laravel را تست کنیم</title><link>https://virgool.ir/@mehrabx/چگونه-تاریخ-های-متغیر-در-php-و-laravel-را-تست-کنیم-cfds7wkh9fr0</link><description>mock date in phpدرود دوستانممکنه براتون پیش اومده باشه که توی اجرای تست‌هاتون بخشی از کد تحت تست مقدار متغیری تولید می‌کرده و تست کردن رو براتون دشوار کرده. تو این بخش بهتون میگم اگر این مقدار متغیر تاریخ بود چطور میتونین مشکل رو حل کنین و امیدوارم به کارتون بیاد.کلاس زیر رو در نظر بگیریم :تاریخ متغیر data()همونطور که میبینید متد generateName بعد از هر بار اجرا به دلیل استفاده از تابع date یک نام جدید و متفاوت تولید میکنه .حالا فرض کنین ما بخوایم متد save رو تست کنیم که داخل خودش از متد generateName استفاده کرده:خط ۳ یک آبجکت از کلاس FileManager میسازیم.خط ۵ متد save را صدا کرده و یک فایل فرضی بهش پاس میدیم.خط ۷ نامی که فکر میکنیم از متد generateName تولید شده.خط ۹ انتظار داریم که یک فایل با نام &#39;testname&#39; ذخیره شده باشد.که میدونیم این تست پاس نمیشه . چون ما نمیدنیم چه نامی برای ذخیره در دیتابیس تولید شده.برای حل این مشکل میتونیم از پکیج Carbon استفاده کنیم که احتمالا از قبل باهاش آشنا هستین و الان هم داخل پروژه‌هاتون استفاده میشه. در خط ۱۶ به جای تابع date از کربن استفاده می‌کنیم:تا اینجا نتیجه کارمون تغییری نکرده .ولی حالا میتونیم از متد setTestNow ابتدای تستمون استفاده کنیم و تاریخ و زمان مورد انتظار خودمون رو بهش پاس بدیم . کاری که این متد میکنه اینه که مقدار مد نظر ما رو میگیره و هر جای کدمون که از کربن استفاده شده باشه مقدار مد نظر مارو جایگزین میکنه . یعنی موقع اجرای تست میتونین نام فایل تولید شده رو خودمون تعیین کنیم:و تمام. ما خروجی مد نظر خودمون از تاریخ رو تولید کردیم و اصطلاحا اون رو mock کردیم.</description><category>محراب محمدزاده</category><author>محراب محمدزاده</author><pubDate>Fri, 24 Feb 2023 14:41:56 +0330</pubDate></item></channel></rss>