Laravel5.4でsqliteの使ってテストをかく準備をします。
以下3行を追加します。 sqliteのインメモリ機能を使います。
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
<env name="DB_CONNECTION" value="sqlite"/> // Add
<env name="DB_DATABASE" value=":memory:"/> // Add
<env name="ADMIN_DOMAIN" value="localhost"/> // Add
</php>
ここは良しなに準備してください。略。
<testsuites>
<testsuite name="Application Test Suite">
<directory suffix="Test.php">./tests</directory>
</testsuite>
</testsuites>
デフォルトでphpunit.xmlにtestsディレクトリ以下の〇〇Test.phpを実行するという設定になっているので、適当にテストファイルを用意します。
<?php
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class PostTest extends TestCase
{
use DatabaseMigrations; // Run migration
public function testIndex()
{
$user = factory(App\User::class)->create();
var_dump($user->first()); // Check the data
// Here is your tests...
}
}
DatabaseMigrations
というトレイトを設定すると、テスト実行の度にマイグレーションが実行されます。
./vendor/bin/phpunit
というテストを実行する時のコマンドをcomposerのscriptsに記述しておくと楽できます。
これでテストがかけるマン。