۳ پویا پارسایی
نحوه رفرش کردن دیتابیس وقتی از جیسون استفاده میکنیم؟
جامعه پی اچ پی ایجاد شده در ۰۳ اردیبهشت ۱۴۰۱

سلام و عرض ادب

چند تا سوال داشتم:

۱- با این روشی که پیش رفتیم آخر کار باز هم یه یوزر داخل جدول میمونه، دلیلش چیه؟ اگه اشتباهه راه حلش چیه؟

۲- توی متد setUp که از migrate:fresh استفاده کردیم، این دستور بعد از هر تست اجرا میشه؟ یا همه ی تستا رو اجرا میکنه بعد آخر کار هم یه بار این دستور رو اجرا میکنه؟

۳- اگر repositoryمون رو به جیسون تغییر بدیم، واسه این که دیتابیسمون رفرش شه باید چیکار کنیم؟

۴ - دستور migrate:fresh توی لاراول اگه ریپازیتوریمون رو تغییر بدیم به یه دیتابیس رابطه ایه دیگه، مثلا postgre، باز هم کار میکنه؟ یا باید باز توی تستامون واسه رفرش اون هم کد دیگه ای پیاده سازی شه؟

سلام و احترام

1 - من داخل دیتابیسم همچین چیزی رو ندیدم، پروژه رو قرار بدید تا بررسی کنم


2 - متد setup اولین متدی هستش که توی کلاس تست اجرا میشه


3 - میتونید یه متد یا هر متدی که به jsonRepository مرتبط هست رو داخل یک Trait بنویسید داخل کلاس testCase اونو use کنید. یه متدی بنویسید که بره محتوای داخل فایل جیسون رو پاک کنه


4 - ن مشکلی پیش نمیاد و به درستی کار میکنه

امیر صالحی ۰۵ اردیبهشت ۱۴۰۱، ۰۵:۰۸

ممنون، در مورد سوال شماره ۱ مشکلش این بود که ما تو متد setUp میایم migrate:fresh رو میزنیم و این دستور فقط ابتدای تست هامون اجرا میشه و بعد از اجرای تست‌ها دیتابیسمون رفرش نمیشه، در نتیجه رکورد هایی که ثبت و آپدیت میشن، حذف نمیشن.

با use کردن trait DatabaseMigrations توی کلاس تست مشکل حل شد و دیگه نیازی به متد setUp نیست.

پویا پارسایی ۰۵ اردیبهشت ۱۴۰۱، ۱۴:۴۰

سلام دوست عزیز

در تست هاتون میتوند از متد tearDown هم استفاده کنید در جاهای مختلف

https://phpunit.readthedocs.io/en/9.5/fixtures.html#more-setup-than-teardown

موفق باشید ?

محمد گازری ۱۹ خرداد ۱۴۰۱، ۱۵:۱۰