Загрузка и изменение размера файла тестирования Laravel - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь что-то разработать, используя метод TDD, и я сталкиваюсь с этой проблемой, которую не могу решить.

Я загружаю изображение с измененным размером и сохраняю в базе данных.

Когда я делаю это вручную (используя мой браузер как обычный пользователь), это работает, но тест не пройден.

Вот мой контроллер:

public function store(Product $product)
    {
        //$name = request('image')->store('products', 'public');

        $name = str_random(50).'.jpg';
        $path = storage_path('app/public/products/'.$name);

        $image = Image::make(request('image'));
        $image->fit(400, 400);
        $image->save($path);

        $product->photos()->save(new Photo([
            'name' => $name
        ]));

        return redirect($product->adminPath());
    }

и вотмой тест

public function a_user_can_add_photos_to_the_product()
    {
        $this->withoutExceptionHandling();
        $this->signIn();

        $product = ProductFactory::create();

        Storage::fake('public');

        $this->post($product->adminPath('/photos'), [
            'image' => UploadedFile::fake()->image('photo.jpg')
        ])->assertRedirect($product->adminPath());

        $product->load(['photos']);

        tap($product->photos->first(), function ($photo) {
            $this->assertInstanceOf('App\Photo', $photo);

            Storage::disk('public')->assertExists($photo->name);
        });

        $this->assertEquals(1, $product->photos->count());
    }

В этот момент тест не пройден, но если я прокомментирую часть изменения размера и использую метод store по запросу, как этот:

Tests\Feature\ManageProductPhotoTest::a_user_can_add_photos_to_the_product
Unable to find a file at path [pJ1Zd19XT0aF9fc5W1famc3n7WwxBt3L9MDB0yRJNlVYcWkMwk.jpg].
Failed asserting that false is true.
public function store(Product $product)
    {
        $name = request('image')->store('products', 'public');

        /*$name = str_random(50).'.jpg';
        $path = storage_path('app/public/products/'.$name);

        $image = Image::make(request('image'));
        $image->fit(400, 400);
        $image->save($path);*/

        $product->photos()->save(new Photo([
            'name' => $name
        ]));

        return redirect($product->adminPath());
    }

тесты пройдены.

Как я могу решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...