Rumah > Soal Jawab > teks badan
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 memanggil set()
dalam ujian saya, ralat dicetuskan.
Saya boleh mengesahkan bahawa komponen itu berfungsi apabila digunakan.
P粉6847208512023-09-15 14:21:45
Ralatnya ialah nilai yang anda berikan tidak serasi dengan fungsi json_encode(), saya akan mencadangkan perkara berikut:
$book = array_merge($emptyForm,[ 'title' => 'Title Test', 'author' => 'Author Test', 'description' => 'Description Test', 'publishedAt' => '2022', 'coverPath' => 'private/covers/test_image.png', 'bookPath' => 'private/books/test_book.pdf', ]); $component = Livewire::test(UploadAsset::class) ->set('assetMeta', $book) ->call('save');