Чтобы запустить сидеры Laravel перед запуском тестов, вы можете использовать один из следующих методов:
Метод 1: используйте параметр --seedс командой php artisan test.
php artisan test --seed
Эта команда запустит тесты, а также запустит загрузчики базы данных перед выполнением тестов.
Метод 2: переопределить метод setUpв тестовом классе и вызвать сеялку вручную.
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
use Illuminate\Support\Facades\Artisan;
class ExampleTest extends BaseTestCase
{
use DatabaseMigrations;
protected function setUp(): void
{
parent::setUp();
Artisan::call('db:seed');
}
// ... Rest of your test methods
}
В этом методе метод setUpвызывается перед каждым тестом и запускает команду db:seedс использованием фасада Artisan.
Метод 3. Создайте специальную тестовую команду, которая запускает раздаточные устройства, а затем запускает тесты.
// Create a new command file, e.g., app/Console/Commands/TestWithSeeders.php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Artisan;
class TestWithSeeders extends Command
{
protected $signature = 'test:seeders';
protected $description = 'Run database seeders before running tests.';
public function handle()
{
Artisan::call('db:seed');
Artisan::call('test');
}
}
После создания командного файла вы можете запускать тесты с сеялками с помощью следующей команды:
php artisan test:seeders