سلام.
اخیرا من یک پکیج منتشر کردم اما مشکلی که وجود داره، اینه که بعد از روز ها کار کردن راهی برای نوشتن تست برای متد های پکیج پیدا نکردم :(
پکیج من یک کلاس اصلی داره که شامل 3 متد به صورت استاتیک میشه. متد شماره 3 رو به راحتی میشه تست کرد اما متاسفانه برای بقیه متد ها هیچ راهی پیدا نکردم.
خوشحال میشم اگر کسی میتونه یه نگاهی به متد ها بندازه و اگر ایده برای تست اونها داره بهم بگه.
متد هایی که به تست نیاز دارن، دو متد زیر هستن:
@mohammadeng3731
مشکل حل شد :)
یادم نبود که ورودی رو تغییر دادم. قبلا یک شئ از Request می خواستم ولی الان که UploadFile هستش به راحتی میشه از fake استفاده کرد.
سلام.
بخش mocking بخش storage testing اون رو مطالعه کردی تو مستندات؟ به نظرم یه نگاه بهش بنداز
@mohammadeng3731
ورودی که دریافت می کنم UploadFile هستش نه فایل به خاطر همین این طوری نمیشه.
@mohammadeng3731
مشکل حل شد :)
یادم نبود که ورودی رو تغییر دادم. قبلا یک شئ از Request می خواستم ولی الان که UploadFile هستش به راحتی میشه از fake استفاده کرد.
آره خب.منم از fake استفاده میکنم کلا همه از fake استفاده میکنن.البته خود builtin که داخل phpunit هستش از بره لاراول بهتره فقط لاراول کلاس UploadFile ش خیلی خوبه برای درست کردن فایل fake. کدای من اینجوریه:
$file = UploadedFile::fake()->image('image.jpg');
$this->post('/', [
'file' => $file,
'_token' => csrf_token()
]);
$this->assertFileExists(storage_path('app/file/'.$file->getClientOriginalName()));
اونورم اینجوری بزنم تستم pass میشه:
request()->file('file')->storeAs('file/',request()->file('file')->getClientOriginalName(),'local');
بره حذف فایل هم از $this->assertFileDoesntExist($path) استفاده میکنم همین و بس
اگه روش باحال تری پیدا کردی الان بذا استفاده کنیم :)
@mohammadeng3731
متد موجود در کلاس:
/**
* Save Single Image
* @param UploadedFile $image
* @param string $path
* @param null $newImageName
* @return false|string
*/
public static function saveSingleImage(UploadedFile $image, $path = 'secret-image', $newImageName = null): string
{
if (Str::substr($path, 0, 6) !== 'public') {
$storage_driver = config('laravel-secret-image.storage_driver');
return is_null($newImageName)
? Storage::disk($storage_driver)->putFile($path, $image)
: Storage::disk($storage_driver)->putFileAs($path, $image, $path, $newImageName . '.' . $image->getClientOriginalExtension());
}
throw new HttpException(422, 'the provided path is not secret. Please remove the `public` from the beginning.');
}
یکی از تست هایی که برای این متد نوشتم:
/** @test */
public function it_can_save_single_secret_image_with_custom_path()
{
$storage_driver = config('laravel-secret-image.storage_driver');
$image = UploadedFile::fake()->image('test.jpg');
$path = 'test-secret-image';
$save_image = LaravelSecretImage::saveSingleImage($image, $path);
Storage::disk($storage_driver)->assertExists($save_image);
self::assertStringContainsString($path, $save_image);
}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟