Witam chciałbym przetestować metodę sklepu w Lavel. W metodzie sklepu ma proste dane i obraz. Faker wygeneruj wszystkie dane, obraz, ale także walidator nie akceptuje obrazu. Dlaczego tak się dzieje? Faker generuj poprawną nazwę obrazu i rozszerzenie.

Oto przypadek testowy

    public function test_an_authenticated_user_can_add_new_companie () 
    {
        $companies = factory(Companies::class)->create();

        $company = $companies->toArray();

        $this->actingAs($this->user);
        $response = $this->postJson('/home/companies/create/add', $company);
        $response->assertStatus(302);
    }

A tutaj jest fabryka

        'name' => $faker->company,
        'email' => $faker->email,
        'logo' => $faker->image(public_path('img\logos'), 100, 100, null, false),
        'website' => $faker->url,
0
pikpak 5 wrzesień 2020, 11:09

1 odpowiedź

Najlepsza odpowiedź

Faker oszczędza tymczasowy obraz i daje ci Filepath , to nie jest to, czego chcesz.

Do testowania przesyłania obrazów należy zamiast tego używać UploadedImage::fake(). Jak trzeba fałszywy, jak działa klasa obrazu z połączenia API.

$data = [
    'logo' => UploadedFile::fake()->image('logo.jpg'),
    ...
];

$response = $this->postJson('/home/companies/create/add', $data);

Aby sprawdzić, czy plik faktycznie zostanie zapisany, możesz udawać i twierdzić, że zostanie wykonany.

Przed połączeniem pocztowym.

Storage::fake('public');

Twierdzenie po rozmowie.

Storage::disk('public')->assertExists('img\logos\logo.jpg');
3
mrhn 5 wrzesień 2020, 09:10