With my laravel application I have a bunch of migrations and db seed data.
In app/config/testing/database.php
I have set a mysql database for testing.
I've populated the test database with migrate
and db:seed
commands, specifying the testing environment.
This works pretty well, but I want to call those commands each time I run phpunit
. If it do it in the setUp then it takes so long as it's called on every single test.
I can also call it in the setUpBeforeClass
which is better, but still longer if I am testing 10 classes.
Is there a way I can all it just once when I run phpunit
?
For now I have done this, in the tests/TestCase.php
class TestCase extends Illuminate\Foundation\Testing\TestCase {
public static $setupDatabase = true;
public function setUp()
{
parent::setUp();
if(self::$setupDatabase)
{
$this->setupDatabase();
}
}
public function setupDatabase()
{
Artisan::call('migrate');
Artisan::call('db:seed');
self::$setupDatabase = false;
}
....
which seems to work, but doesn't feel ideal, but means I can easily re-setup the db if I need to reset it for a test...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With