Laravel10でのテストの書き方

こんにちは!とびろぐ管理人のとびうおです。

今回はLaravel10にて、簡単にテストを書く方法について詳しく解説していきたいと思います!

とびうおくん
とびうおくん

今回はあるエンドポイントに対して、

リクエストを送った際に期待するページが

レスポンスされるかどうかという

テストを書いていくよ!

前提

まず今回テストするのはすごい簡単なページです。

http://localhost/hello にアクセスするとhelloというページが返ってくるというページです。

<web.php>

Laravel10でのテストの書き方
Laravel10でのテストの書き方

<HelloController>

Laravel10でのテストの書き方
Laravel10でのテストの書き方

<hello.blade.php>

Laravel10でのテストの書き方
Laravel10でのテストの書き方
とびうおくん
とびうおくん

このくらい簡単な方が、

テストを書きやすいでしょ?

実際にテストを書いてみる

余談

では、ここで testを書いてみましょう。

 ./vendor/bin/sail php artisan test

と試しに打つと、

Laravel10でのテストの書き方
Laravel10でのテストの書き方
とびうおくん
とびうおくん

24 passedって!

この前の記事で入れたbreezeってテストまで書いてくれるのか…

Laravel10 でbreezeを使ってみる
こんにちは!とびろぐ管理人のとびうおです。今回はLaravel10にてbreezeを使用してみたので、使い方等も含めて説明していけたらなと思います!スターターキットの一つのbreezeLaravel10では簡単にロ...

まあ、それは置いておいて、実際にテストを書いてみましょう

本題

今回はhelloControllerのテストを書くので、以下のコマンドでテストファイルを作成します。

 ./vendor/bin/sail php artisan make:test HelloControllerTest 

ローカルの方は↓でどうぞ

php artisan make:test HelloControllerTest 

そうすることで、

Laravel10でのテストの書き方
Laravel10でのテストの書き方

無事、HelloControllerTestが作成されましたね。

そしたらここにテストを書いていきましょう。

HelloControllerの中身を見てみると親切なことに例が書いてありますね。

Laravel10でのテストの書き方
Laravel10でのテストの書き方

そこで、16行目を以下のように書き換えてみます

Laravel10でのテストの書き方
Laravel10でのテストの書き方

16行目を

$response = $this->get('/hello');

にしてみました。

再度ここで

 ./vendor/bin/sail php artisan test

を打つと、無事HelloControllerTestが成功していることが分かりますね。

Laravel10でのテストの書き方
Laravel10でのテストの書き方

より綺麗に書いてみる

これだけでも /hello というエンドポイントにアクセスした際に200が返ってくるというテストはかけましたが、もう少し詳しく、かつ便利に書いていきたいですね。

なので以下のように書き換えていきます。

Laravel10でのテストの書き方
Laravel10でのテストの書き方
<?php

namespace Tests\Feature;

use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;

class HelloControllerTest extends TestCase
{

    private string $route_hello;
    private string $view_hello;

    public function setUp(): void
    {
        parent::setUp();
        $this->route_hello = route('hello');
        $this->view_hello = 'hello'; //ここはviewの名前を書く
    }

    public function test_response_hello(): void
    {
        $response = $this->get($this->route_hello);
        $response->assertViewIs($this->view_hello);
    }
}

このように書いて、再度実行してみると

ちゃんと成功していることがわかります。

なぜこのように書くのか

では、1つ目のコードと2つ目のコードを比較してみましょう。

Laravel10でのテストの書き方
Laravel10でのテストの書き方
Laravel10でのテストの書き方
Laravel10でのテストの書き方

右の方が長くて書くのが面倒くさそう…と思おうかもしれません。

しかし、右のコードは今後、urlが変わった際も対応できますし、しっかりviewが返ってきているのかというところまでテストできます。

とびうおくん
とびうおくん

せっかくテストを書くなら、

丁寧に書こう!

まとめ

Laravel10ではかなり簡単にテストを書くことができます!

ぜひ、みなさんもエンドポイントとレスポンスくらいのテストは書いて、安心して開発をしてみてはいかがでしょうか?

とびうおくん
とびうおくん

が、頑張ってテスト書くもん!

その他の記事

とびろぐではこれ以外にもLaravelの記事を多く書いています!

ぜひみてみてください!

Laravel
「Laravel」の記事一覧です。
とびうお
ブログ管理人です!
swimaneというアプリをリリースしました!

コメント

タイトルとURLをコピーしました