自定义 Faker 提供者:重用城市

问题描述

我构建了一个自定义 Faker Provider 来生成团队名称

这是它的样子:

<?PHP

namespace App\Faker;

use Carbon\Carbon;
use Faker\Provider\Base;

class TeamProvider extends Base
{
    ...

    public function teamName()
    {
       
        $name[] = static::randomElement(static::$prefixes);
        ...
        $name[] = $this->generator->city;
        //some more stuff to create a nice team name

        return implode(" ",$name);
    }
}

这在我的工厂中运行良好:

    /**
     * Define the model's default state.
     *
     * @return array
     */
    public function deFinition(): array
    {
        return [
            'name' => $this->faker->teamName,'city' => $this->faker->city
        ];
    }

但是:TeamProvider 生成一个城市,而这与 Factory 的伪造者生成的城市不同。

所以 teamName 是(只是一个例子)AC Glasgow 1990 而城市 AC GlasgowLondon ;-) 这没有多大意义 ;-)

所以我的问题是:在这种情况下如何重用 city 以获得有效结果?

解决方法

当我再次阅读文档时,我提到了我的问题。 Faker 不用于创建以某种方式“逻辑”相关的数据,就像真人的数据一样。它只是用有效数据填充模型的字段。因此,它对于修补和测试很有用,但不适用于引导一些有效且一致的数据。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...