coarad supp
5 سال پیش توسط coarad supp مطرح شد
16 پاسخ

تست phpunit

سلام دوستان؛ برای تست نویسی یه مشکل دارم، ممنون میشم راهنمایی کنید

از 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());
    }

ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

وقتی در لاراول از سیستم Authentication استفاده میکنید.. این قضیه خود به خود اتفاق میفته
داخل LoginController رو اگر چک کنی میبینی توی متد سازنده از میدلور Guest استفاده میشه پس کاربرها خود به خود نمیتونند دیگه صفحه لاگین رو ببینند و به داشبورد هدایت میشند


coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 5 سال پیش مطرح شد
1

@ali.bayat
بله بله، :) اینقدر که مخمو درگیر کرده بود این تست نویسی از این زاویه نگاش نکرده بودم 😅😅😅
ممنون ، لطف کردین

اقای بیات یه لطفی میکنید که توضیحی بدین واسه تست نویسی باید کجاها رو واسش تست نوشت، ایا همه تک به تک قسمت های سیستم رو باید واسش تست نوشت؟ یا فقط قسمت های مهم رو،
چون خیلی موقت گیر هست این کار،برای مثلا دیروز خیلی وقتم رو گذاشتم واسه تست نویسی قسمت لاگین ادمین ها (ناگفته نماند که بیشتر یادگیری بود، چون اولین بارم بود)
چون هم دوست دارم هر قسمتی رو مینویسم تستش رو هم بنویسم ولی خوب خیلی زمان بر هست


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 5 سال پیش مطرح شد
1

@coaradsupp
سلام.
ببینید تست نویسی برای کل پروژه نیست.
اساس تست اینه که شما قسمت های جدیدی که میخواهید به سیستم اضافه کنید، قبلش تست کنید تا از کارکرد درست اونها اطمینان حاصل کنید بعد از اونها استفاده کنید.


coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 5 سال پیش مطرح شد
0

@mohsenbostan

ممنون، ینی پروژه ای که از صفر نوشته میشه نیاز به تست نویسی نداره؟ یا داره فقط قسمت های مهمش؟
ممنون میشم بدونم بقیه تست رو کی و کجا و به چه شکل مینویسن


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 5 سال پیش مطرح شد
1

@coaradsupp
طبق روش TDD ، شما از زمان شروع پروژه قبل از این که کد رو در اصل برنامه قرار بدید، ابتدا برای اون تست می نویسید.
می تونید از همون اول تست نویسی کنید و همچنین می تونید برای بخش های مهم و پیچیده تست بنویسید این بستگی به خود برنامه نویس داره که چه موقع تست بنویسه.


coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 5 سال پیش مطرح شد
1

@mohsenbostan
ممنون اقای بستان، پس نیاز به نوشتن تست واسه همه قسمت ها نیس، قسمت های مهم تست نویسی بشه زمان زیادی هم نمیگیره


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

ببینید شما اکثرا با Feauture Test ها سر و کار دارید
مثلا فلان کاربر میتونه پست جدید ارسال کنه
یا اینکه فقط خود این کاربر بتونه پست هاش رو حذف کنه...

و یونیت تست رو داریم که کمی سطح پایین تره:
مثلا اگر این کلاس رو Instantiate کنیم و این داده هارو پاس بدیم.. این خروجی رو خواهیم داشت

در ابتدا ممکنه کمی زمان بر باشه اما اگر عادت کنید .. این سبک از توسعه عالی هست

  • برای تست کدها مجبور نیستید همش به مرورگر برید
  • کدهاتون رو با اعتماد به نفس ریفکتور میکنید
  • این تست ها بهترین مستندات برای امکانات پروژه هستند

coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 5 سال پیش مطرح شد
0

@ali.bayat

ممنون اقای بیات،
ینی میگین که همه ی قسمت های سیستم رو تست نویسی کنیم؟یا این کار درست نیست، فقط قسمت های مهم رو؟
مثلا، یه قسمت داریم واسه ادمین ها که لاگین دارن ، نمایش لیستشون توی پنل مدیریت هست،ایجادش هست، ویرایش، حذف، سطح دسترسیاش هست،

ینی واسه همش تست بنویسیم؟


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

چرا که نه؟
البته به مقیاس پروژه هم بستگی داره

اونقدر ها هم که فکر میکنید پروسه زمان بری نیست
کافیه با Assertion های PHPUnit آشنا باشید.

یه تست یک متد توی یه کلاسه دیگه.. یه حجم کمی به کدنویسی اضافه میشه اما فوایدش می‌ارزه


coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 5 سال پیش مطرح شد
0

@ali.bayat

خیلی خیلی ممنون، توضیحاتتون خیلی عالی و قانع کنند هست، لطف کردین🙏🙏🙏


سبحان دادخواه
تخصص : دانشجوی برنامه نویسی :)
@SobhanDadkhah 5 سال پیش مطرح شد
1

@coaradsupp
با سلام . نظرات آقای بیات واقعا حرفه ای و کامل هست . فقط به عنوان پیشنهاد خواستم بگم اگر زمانی آموزشی نیاز داشتین دوره تست نویسی لاراکست فوق العادس . من خودم دو هفتس باهاش دارم پیش میرم واقعا بی نظیره و دید وسیعی پیدا میکنید به تست نویسی .
این لینکش هست


coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 5 سال پیش مطرح شد
0

@SobhanDadkhah
لطف بسیار کردین اقای دادخواه، ممنونم،
این دوره رو باید خرید؟ یا موجود هست که بشه استفاده کرد؟
اتفاقا این دوره رو ی کانال توی تلگرام گذاشته بود با این عنوان
Let's Build A Forum with Laravel and TDD
ولی دانلود نکردم


سبحان دادخواه
تخصص : دانشجوی برنامه نویسی :)
@SobhanDadkhah 5 سال پیش مطرح شد
1

@coaradsupp خواهش میکنم .
بله توی سایت لاراکست فروشی هست ولی این سایت برای فروش گذاشتن با قیمت های خوب . اونی که شما فرمودین دوره forum Tdd هست که رایگانه ولی اونی که من گفتم عنوانش این هست : lets build an App with laravel TDD .
خودم خیلی روی قانون کپی رایت حساسم ولی خرید اشتراک دلاری خیلی خیلی دردسر و دوندگی داشت مجبور شدم از سایت ایرانی خرید بکنم . تا امروز هیچی از تست نویسی نمیدونستم ولی هرچی بیشتر پیش برین میبینید که چقدر بدرد میخوره 😊


coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 5 سال پیش مطرح شد
1

@SobhanDadkhah

بله، همین طوره، واسه ما تو ایران با این وضع خیلی سخته که این دوره ها رو تهیه کنیم،
خیلی خیلی ممنون لطف کردین🙏🙏🙏


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
2

@SobhanDadkhah
در این که آقای جفری وی جز بهترین مدرس ها هستند.. هیچ شکی نیست

@coaradsupp
خواهش میکنم، پیروز باشید


coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 5 سال پیش مطرح شد
1

@SobhanDadkhah

یکی از دوستان اموزشش رو داشت و توی کانال تلگرامش قرار داده، گفتم شاید دوستان خواستن استفاده کنن
https://t.me/LaracastsCourse


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام