🔥

Laravel で Pest 始めました

2021/09/30に公開

まえがき

最近、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