这主要是为了在测试期间设置数据;看来,文档中没有正式的方法可以使工厂像在基本的Laravel框架中一样工作。我该如何实例化它们,以便例如可以在运行测试之前实例化一组模型?
答案 0 :(得分:1)
在基本测试文件中的setUp方法中(如果需要在测试之外访问它们,则在ServiceProvider中)中,您需要将Eloquent Factory作为单例附加到容器,该容器将Faker Generator并将工厂目录的路径作为参数。
$this->app->singleton(Illuminate\Database\Eloquent\Factory::class, function($app) {
$faker = $app->make(Faker\Generator::class);
return Illuminate\Database\Eloquent\Factory::construct($faker, __DIR__.('/../path/to/factories/dir'));
});
答案 1 :(得分:0)
这也是在插件中添加工厂的代码段: https://octoberduck.com/ru/article/factories-in-a-plugin
将此代码放在您的Plugin.php中:
use Illuminate\Database\Eloquent\Factory as EloquentFactory;
public function register()
{
app(EloquentFactory::class)->load(plugins_path('author/plugin/factories'));
}