Rumah  >  Soal Jawab  >  teks badan

Ujian Laravel menggunakan unit PHP - Ujian fail tidak menyokong jenis

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粉087074897P粉087074897424 hari yang lalu556

membalas semua(1)saya akan balas

  • P粉684720851

    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');

    balas
    0
  • Batalbalas