Laravelアプリにおけるテストコード〜基礎編

本日のお題

本日のお題は、Laravelアプリのテストコード(基礎編)です。

目次

  • テストコードのファイルについて
  • 既存のテストコードファイル
  • 新しいファイルの追加
  • ファイルの中身の編集
  • テストの実行

テストコードのファイルについて

テストコードのファイルに関して、最初に押さえておくことは以下の2つです。

まずはこれを押さえた上で、次に進みましょう。

既存のテストコードファイル

上記のFeatureディレクトリとUnitディレクトリには、それぞれ既存のファイルが一つづつ用意されています。

それぞれ、中身を見ていきましょう。

 

Feature/EampleTest.php

class ExampleTest extends TestCase{
    use WithoutMiddleware;

    ....中略.....

   public function test_example(){
        $response = $this->get("/");

        $response->assertStatus(200);

    }

}

 

$response = $this->get("/");は"/"にgetメソッドでリクエストを送るための記述であり、$response->assertStatus(200);はレスポンスのステータスコードが200であることを確認するためのものです。

なので、"/"にリクエストを送信して成功すれば、このテストも成功ということになります。

 

ちなみに、もう一つのUnit/ExampleTest.phpには以下の一文しかありません。

public function test_example(){
    $this->assertTrue(true);

}

なお、assertTrueメソッドは、引数がtrueかどうかをテストするためのものなので、テストが動けば必ず成功します。

assertXxx系のメソッドについては、いずれまとめると思います。

ファイルの追加

ファイルを追加するには、以下のコマンドを使用します。

php artisan make:test XxxTest

これで、指定したファイルがTests/Featureディレクトリに作成されます。

テストコードファイルの編集

基本的には、テスト内で実行したい処理を順番に記述していくだけです。

ですが、そのためのメソッドは知っておかないといけないので、代表的なものを載せておきます。

  • get("xxx")
    引数として与えたURLに対し、getメソッドでリクエストを送った場合のレスポンスを取得する。そのまま変数に代入することも可能。
    例)$response = $this->get("/");
  • post("/", "xxx")
    上記のgetメソッドのHTTPメソッドをPOSTに変更したバージョンです。
    POSTメソッドは何かしらのパラメータをコントローラに送信しているはずなので、それらを第二引数に連想配列の形で指定します。
    以下の例では、"items"というパスにname="ゲーム機", price=10000というパラメータを送信しています。
    $response = $this->post("/items", [ "name" => "ゲーム機", "price" => 10000 ]);
  • $response->assertStatus(xxx)
    レスポンスが返って来た際のHTTPステータスコードがxxxであるかどうかをテストします。
  • $response->assertRedirest("/xxx");
    指定したパスにリダイレクトされるかどうかをテストします。

テストの実行

テストの実行は、php artisan testコマンドで実行可能です。

このコマンドを叩くことで、testsディレクトリ以下の全てのテストが実行されます。

まとめ

基礎編についてはこの辺りで。

次回は、テストコード用のメソッドかFactory系についてまとめると思います。