اذهب إلى المحتوى
  • 0

إختبار رفع فيديو لا ينجح Laravel Livewire

Mahmoud Alrashidi

السؤال

أحاول إختبار خاصية رفع فيديو عن طريق Laravel Livewire بالرغم من أن خاصية الرفع تعمل إلا أن الإختبار يفشل و لا أدر أين المُشكلة، 

هذا إختبار الخاصية:

public function can_upload_video()
{
  $sizeInKilobytes = 100000;

  $file = UploadedFile::fake()->create(
    'video.mp4', $sizeInKilobytes, 'mp4'
  );

  Storage::fake('videos_disk');

  $this->actingAs(User::factory()->create());

  Livewire::test(Create::class)
    ->set('title', 'foo')
    ->set('video', $file)
    ->call('upload');

  dd(Storage::disk('videos_disk')->allFiles());
}

و هذا مُكون livewire:

class Create extends Component
{
  use WithFileUploads;
  use DispatchesJobs;

  public $video;
  public $title,

  public function upload()
  {
    $this->validate([
      'title' => 'required',
      'video' => 'max:1000000|required|file|mimetypes:video/mp4,video/mpeg,video/x-matroska',
    ]);

    $video = Video::create([
      'disk'          => 'videos_disk',
      'original_name' => $this->video->getClientOriginalName(),
      'path'          => $this->video->store('/', 'videos_disk'),
      'streaming_path'=> null,
      'title'         => $this->title,
    ]);

    $this->dispatch(new ConvertVideoForStreaming($video));
  }
}

الخاصية تعمل لكن عند تنفيذ الإختبار يُعطي مصفوفة فارغة. المُتوقع أن يعطيني مصفوفة بها الملف المرفوع.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

هذا غالباً يحدث بسبب فشل ال validation حيث أنك تتحقق من mime type لكن في الإختبار الملف الوهمي لا يحتوي على نفس mime type هنا:

<?php

$file = UploadedFile::fake()->create(
  'video.mp4', $sizeInKilobytes, 'mp4'
);

لذلك حاول تغيير هذه الأسطر:

<?php

$file = UploadedFile::fake()->create(
  'video.mp4', $sizeInKilobytes, 'mp4'
);

إلى mime type صحيح بهذا الشكل:

<?php

$file = UploadedFile::fake()->create(
  'video.mp4', $sizeInKilobytes, 'video/mp4'
);
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك تغيير الكود التالي 

$file = UploadedFile::fake()->create(
    'video.mp4', $sizeInKilobytes, 'mp4'
  );

إلى 

$file = UploadedFile::fake()->create(
    'video.mp4', $sizeInKilobytes, 'video/mp4'
  );

بحيث تم تغيير mime إلى mime صحيح.

إيضا حاول استخدام ملف وسائط حقيقي بدلاً من ملف وسائط مزيف.

$path = <path to your file>;
$file = new UploadedFile($path, $name, filesize($path), 'video/mp4', null, true);

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...