سلام دوستان؛ برای تست نویسی یه مشکل دارم، ممنون میشم راهنمایی کنید
از multiauth استفاده میکنم، و میخوام برای ادمین ها تست بنویسم که وقتی لاگین هستن صفحه لاگین رو نبینن و ریدایرکت بشن به صفحه داشبورد، الان به این شکل نوشتم و اوکیه
public function test_admin_cannot_view_login_page_when_authenticated()
{
$admin = factory(Admin::class)->make();
$response = $this->actingAs($admin,'admin')->get(route('admin.loginForm'));
$response->assertRedirect(route('admin.dashboard'));
$this->assertTrue(Auth::guard('admin')->check());
}
ولی با یوزر هم تست میکنم اوکی میده، به این شکل:
public function test_admin_cannot_view_login_page_when_authenticated()
{
$admin = factory(User::class)->make();
$response = $this->actingAs($admin,'admin')->get(route('admin.loginForm'));
$response->assertRedirect(route('admin.dashboard'));
$this->assertTrue(Auth::guard('admin')->check());
}
وقتی در لاراول از سیستم Authentication استفاده میکنید.. این قضیه خود به خود اتفاق میفته
داخل LoginController رو اگر چک کنی میبینی توی متد سازنده از میدلور Guest استفاده میشه پس کاربرها خود به خود نمیتونند دیگه صفحه لاگین رو ببینند و به داشبورد هدایت میشند
@ali.bayat
بله بله، :) اینقدر که مخمو درگیر کرده بود این تست نویسی از این زاویه نگاش نکرده بودم 😅😅😅
ممنون ، لطف کردین
اقای بیات یه لطفی میکنید که توضیحی بدین واسه تست نویسی باید کجاها رو واسش تست نوشت، ایا همه تک به تک قسمت های سیستم رو باید واسش تست نوشت؟ یا فقط قسمت های مهم رو،
چون خیلی موقت گیر هست این کار،برای مثلا دیروز خیلی وقتم رو گذاشتم واسه تست نویسی قسمت لاگین ادمین ها (ناگفته نماند که بیشتر یادگیری بود، چون اولین بارم بود)
چون هم دوست دارم هر قسمتی رو مینویسم تستش رو هم بنویسم ولی خوب خیلی زمان بر هست
@coaradsupp
سلام.
ببینید تست نویسی برای کل پروژه نیست.
اساس تست اینه که شما قسمت های جدیدی که میخواهید به سیستم اضافه کنید، قبلش تست کنید تا از کارکرد درست اونها اطمینان حاصل کنید بعد از اونها استفاده کنید.
ممنون، ینی پروژه ای که از صفر نوشته میشه نیاز به تست نویسی نداره؟ یا داره فقط قسمت های مهمش؟
ممنون میشم بدونم بقیه تست رو کی و کجا و به چه شکل مینویسن
@coaradsupp
طبق روش TDD ، شما از زمان شروع پروژه قبل از این که کد رو در اصل برنامه قرار بدید، ابتدا برای اون تست می نویسید.
می تونید از همون اول تست نویسی کنید و همچنین می تونید برای بخش های مهم و پیچیده تست بنویسید این بستگی به خود برنامه نویس داره که چه موقع تست بنویسه.
@mohsenbostan
ممنون اقای بستان، پس نیاز به نوشتن تست واسه همه قسمت ها نیس، قسمت های مهم تست نویسی بشه زمان زیادی هم نمیگیره
ببینید شما اکثرا با Feauture Test ها سر و کار دارید
مثلا فلان کاربر میتونه پست جدید ارسال کنه
یا اینکه فقط خود این کاربر بتونه پست هاش رو حذف کنه...
و یونیت تست رو داریم که کمی سطح پایین تره:
مثلا اگر این کلاس رو Instantiate کنیم و این داده هارو پاس بدیم.. این خروجی رو خواهیم داشت
در ابتدا ممکنه کمی زمان بر باشه اما اگر عادت کنید .. این سبک از توسعه عالی هست
ممنون اقای بیات،
ینی میگین که همه ی قسمت های سیستم رو تست نویسی کنیم؟یا این کار درست نیست، فقط قسمت های مهم رو؟
مثلا، یه قسمت داریم واسه ادمین ها که لاگین دارن ، نمایش لیستشون توی پنل مدیریت هست،ایجادش هست، ویرایش، حذف، سطح دسترسیاش هست،
ینی واسه همش تست بنویسیم؟
چرا که نه؟
البته به مقیاس پروژه هم بستگی داره
اونقدر ها هم که فکر میکنید پروسه زمان بری نیست
کافیه با Assertion های PHPUnit آشنا باشید.
یه تست یک متد توی یه کلاسه دیگه.. یه حجم کمی به کدنویسی اضافه میشه اما فوایدش میارزه
@coaradsupp
با سلام . نظرات آقای بیات واقعا حرفه ای و کامل هست . فقط به عنوان پیشنهاد خواستم بگم اگر زمانی آموزشی نیاز داشتین دوره تست نویسی لاراکست فوق العادس . من خودم دو هفتس باهاش دارم پیش میرم واقعا بی نظیره و دید وسیعی پیدا میکنید به تست نویسی .
این لینکش هست
@SobhanDadkhah
لطف بسیار کردین اقای دادخواه، ممنونم،
این دوره رو باید خرید؟ یا موجود هست که بشه استفاده کرد؟
اتفاقا این دوره رو ی کانال توی تلگرام گذاشته بود با این عنوان
Let's Build A Forum with Laravel and TDD
ولی دانلود نکردم
@coaradsupp خواهش میکنم .
بله توی سایت لاراکست فروشی هست ولی این سایت برای فروش گذاشتن با قیمت های خوب . اونی که شما فرمودین دوره forum Tdd هست که رایگانه ولی اونی که من گفتم عنوانش این هست : lets build an App with laravel TDD .
خودم خیلی روی قانون کپی رایت حساسم ولی خرید اشتراک دلاری خیلی خیلی دردسر و دوندگی داشت مجبور شدم از سایت ایرانی خرید بکنم . تا امروز هیچی از تست نویسی نمیدونستم ولی هرچی بیشتر پیش برین میبینید که چقدر بدرد میخوره 😊
بله، همین طوره، واسه ما تو ایران با این وضع خیلی سخته که این دوره ها رو تهیه کنیم،
خیلی خیلی ممنون لطف کردین🙏🙏🙏
@SobhanDadkhah
در این که آقای جفری وی جز بهترین مدرس ها هستند.. هیچ شکی نیست
@coaradsupp
خواهش میکنم، پیروز باشید
یکی از دوستان اموزشش رو داشت و توی کانال تلگرامش قرار داده، گفتم شاید دوستان خواستن استفاده کنن
https://t.me/LaracastsCourse
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟