如何获取在测试中使用Laravel Livewire上载的文件的哈希名称

如何获取在测试中使用Laravel Livewire上载的文件的哈希名称,laravel,laravel-livewire,Laravel,Laravel Livewire,我正在尝试为以下上传图像的Livewire组件编写测试: use Livewire\Component; use Livewire\WithFileUploads; class UploadImage extends Component { use WithFileUploads; public $image; public function save() { $this->validate([ 'image'

我正在尝试为以下上传图像的Livewire组件编写测试:

use Livewire\Component;
use Livewire\WithFileUploads;

class UploadImage extends Component
{
    use WithFileUploads;

    public $image;

    public function save()
    {
        $this->validate([
            'image' => 'image|mimes:jpg,jpeg',
        ]);

        $storedImage = $this->image->store('images'); // returns e.g. "images/PznpCCFUUDjZuZRDEAGpsr7SxV2qIM2dEsZ3l0zO.jpeg"

        // save $storedImage as the name in the images table 
    }
}
下面的测试失败,因为文件以哈希名称保存到磁盘和数据库,而不是
test.jpg
。如何获取Livewire为测试中的图像创建的哈希名称

组件中的
$storedImage
与测试中的
$image->hashName()
不同

/** @test **/
function it_can_upload_an_image() {
    Storage::fake();

    $image = UploadedFile::fake()->image('test.jpeg');

    Livewire::test(UploadImage::class)
        ->set('image', $image)
        ->call('save');

    $this->assertDatabaseHas('images', [
        'name' => "images/{$image->hashName()}",
    ]);

    Storage::assertExists("images/{$image->hashName()}");
}

我在源代码的测试中找到了答案。解决方案非常简单我在源代码的测试中找到了答案。解决方案非常简单如果您想获得上传文件的原始名称,可以使用getClientOriginalName方法

所以你可以

$this->file->getClientOriginalName()

如果您想获取上传文件的原始名称,可以使用getClientOriginalName方法

所以你可以

$this->file->getClientOriginalName()

这正是我想要的。谢谢这正是我想要的。谢谢