Как я могу использовать фабрики моделей в October CMS?

Это в первую очередь для настройки данных во время тестирования; похоже, что в документации нет официального способа заставить фабрики работать так, как они работают в базовой Laravel Framework. Как я могу создать их экземпляры, чтобы я мог, например, создать экземпляр набора моделей перед запуском теста?


person Dakota Trotter    schedule 13.09.2019    source источник
comment
Нигде не мог найти ничего об этом, за исключением нескольких сообщений на форумах, где люди спрашивали, как это сделать (без ответа), поэтому, разобравшись с этим, я подумал, что должен поделиться этим.   -  person Dakota Trotter    schedule 13.09.2019


Ответы (2)


В вашем базовом тестовом файле в методе 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'));
});
person Dakota Trotter    schedule 13.09.2019
comment
Отлично. Спасибо, что поделились. Для себя я разместил этот код в PluginTestCase.php - person alexwenzel; 28.12.2019

Вот также фрагмент для добавления ваших заводов в плагин: 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'));
}
person Vdomah    schedule 28.12.2019