Laravel で Pest 始めました
まえがき
最近、Laravel 界隈で賑わっている Pest を始めました。
Pest は、テスト用のフレームワークで、PHPUnit を土台として作られています。
Pest: An elegant PHP Testing Framework
Laravel 専用ではなく、あくまで、PHP 用のものですが、
Pest の開発者(ら)が、Laravel を開発しているので、
必然的に、Laravel を意識したものになっています。
Pest を始める前に、まずは、PHPUnit の基本、そして Laravel でのテスト方法は分かっているのが前提になります。
何がそんなにいいのか?
PHPUnit と違って、お決まり記述などの無駄なものがありません。シンプルに書けます。また、PHPUnit には無い機能などもあったりします。
下記は、それぞれのコマンドでテストファイル(の土台)を生成したものです。
php artisan make:test HogeTest (PHPUnit 用)
<?php
namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;
class HogeTest extends TestCase
{
/**
* A basic feature test example.
*
* @return void
*/
public function test_example()
{
$response = $this->get('/');
$response->assertStatus(200);
}
}
php artisan pest:test PestTest(Pest 用)
<?php
it('has pest page', function () {
$response = $this->get('/pest');
$response->assertStatus(200);
});
この時点で既にシンプルですね。
テスト内容や書く人にも依るので、一概には言えませんが、
テストの行数的には、20~30%位は減らせると勝手に思ったりはします。
この Pest を導入したからと言って、以前の書き方はできないかと言うと、そういう事はなく、
ざっくり言ってしまえば、共存可能です。
学習コスト的には、1~2日、ドキュメントを読み込んで実際動かしてみれば、
大体把握できるだろうと思います。
今はまだ、Laravel の標準インストールでは、組み込まれませんが、
1年後?とかには、標準でインストールされるかも知れませんね。
という事で、今後の開発には、Pest を使って行きたいと思います。
Discussion