Saya menggunakan Laravel 10 dan Livewire 2. Saya sedang menulis ujian mudah untuk komponen, yang hanya borang muat naik. Saya mengalami ralat mesej misteri:
FAILED Tests\Feature\Livewire\UploadAssetTest > book can be saved correctly Type is not supported at vendor/laravel/framework/src/Illuminate/Http/JsonResponse.php:88 84▕ default => json_encode($data, $this->encodingOptions), 85▕ }; 86▕ 87▕ if (! $this->hasValidJson(json_last_error())) { ➜ 88▕ throw new InvalidArgumentException(json_last_error_msg()); 89▕ } 90▕ 91▕ return $this->update(); 92▕ }
Ujiannya ialah:
/** @test */ public function book_can_be_saved_correctly() { $admin = User::factory()->create(); $this->actingAs($admin); Storage::fake('private'); $testBook = UploadedFile::fake()->create('private/books/test_book.pdf'); $testCover = UploadedFile::fake()->image('private/covers/test_image.png'); $emptyForm = (new UploadBookService())->buildForm(); $book = array_merge($emptyForm,[ 'title' => 'Title Test', 'author' => 'Author Test', 'description' => 'Description Test', 'publishedAt' => '2022', 'cover' => $testCover, 'book' => $testBook, ]); $component = Livewire::test(UploadAsset::class) ->set('assetMeta', $book) ->call('save'); Storage::assertExists('books/test_book.pdf'); Storage::assertExists('covers/test_cover.png'); }
Untuk perkara yang saya debug setakat ini, sebaik sahaja saya memanggilset()
dalam ujian saya, ralat dicetuskan. Saya boleh mengesahkan bahawa komponen itu berfungsi apabila digunakan.
Ralatnya ialah nilai yang anda berikan tidak serasi dengan fungsi json_encode(), saya akan mencadangkan perkara berikut: