Это в первую очередь для настройки данных во время тестирования; похоже, что в документации нет официального способа заставить фабрики работать так, как они работают в базовой Laravel Framework. Как я могу создать их экземпляры, чтобы я мог, например, создать экземпляр набора моделей перед запуском теста?
Как я могу использовать фабрики моделей в October CMS?
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
Отлично. Спасибо, что поделились. Для себя я разместил этот код в 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