Laravel 7 model factory бросает исключение "InvalidArgumentException: Unknown formatter" для faker


Laravel 7 model factory бросает исключение "InvalidArgumentException: Unknown formatter" для faker

11.10.2020 03:27:07 Просмотров 82 Источник

Я начал создавать веб-приложение с помощью Laravel 8. Я заметил, что в Laravel 8 изменилось несколько вещей, включая завод моделей. Теперь я пишу модульный тест, используя фабрики для моделей. Но это бросает ошибку, когда я подделываю поля с помощью Фейкера.

Это мой тестовый метод.

public function testHasRoleReturnsTrue()
{
    $user = User::factory()->create();
}

Как вы можете видеть, все, что я пытаюсь сделать прямо сейчас, - это создать пользователя с помощью фабрики. Это мой заводской класс для пользовательской модели.

<?php

namespace Database\Factories;

use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Support\Str;

class UserFactory extends Factory
{
    /**
     * The name of the factory's corresponding model.
     *
     * @var string
     */
    protected $model = User::class;

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function definition()
    {
        return [
            'name' => $this->faker->name,
            'email' => $this->faker->unique()->safeEmail,
            'email_verified_at' => now(),
            'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
            'remember_token' => Str::random(10),
        ];
    }
}

Как вы можете видеть, я подделываю ценности с помощью Фейкера. Когда я запустил тест, я получил следующую ошибку.

InvalidArgumentException: Unknown formatter "name"

/var/www/vendor/fzaninotto/faker/src/Faker/Generator.php:248
/var/www/vendor/fzaninotto/faker/src/Faker/Generator.php:228
/var/www/vendor/fzaninotto/faker/src/Faker/Generator.php:274
/var/www/database/factories/UserFactory.php:28
/var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Factory.php:366
/var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Factory.php:345
/var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Factory.php:329
/var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/GuardsAttributes.php:157
/var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Factory.php:334
/var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Factory.php:302
/var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Factory.php:228

Я предполагаю, что ошибка заключается в том, что я использую faker. Но я не могу обнаружить никаких проблем в коде. Что не так с моим кодом и как я могу это исправить?

У вопроса есть решение - Посмотреть?

Ответы - Laravel 7 model factory бросает исключение "InvalidArgumentException: Unknown formatter" для faker / Laravel 7 model factory is throwing "InvalidArgumentException: Unknown formatter" exception for faker

Является ответом!
Jakub Truneček

11.10.2020 06:30:40

Это потому, что вы используете это в модульных тестах. И это расширяет тестовый кейс PhpUnit.

Когда вы расширяете тестовый кейс Laravel, он должен работать.

Помочь в развитии проекта:
Закрыть X