Laravel 演習入門

Hello World!

Routing の基礎

問題

GET /hello にアクセスすると、 Hello World! が表示される web アプリを作成してください。


問題は、以下の手順で解いてください。

  1. Red:小さいテストを作成し、失敗を確認してください
  2. Green:テストを成功させてください
  3. Refactor:整理・整頓してください
  4. 必要に応じて、1から3を繰り返してください

ヒント

背景知識
便利なアサーションの例

アサーションの調べ方 も合わせてご覧ください。
今回は、以下を使うのではないかと思います。

解答例

続きを読む

実行環境:

テスト:

  1. /hello で HTTP ステータスコード200を返すか
  2. Hello World! を返すか

Note

この問題は、最初の問題なので、特に小さいステップで進めます。
ここまで細かくなくて良いよという方は、 Red2 から読んでください。

Red1: /hello で HTTP ステータスコード200を返すか

いきなり Hello World! の文字列確認を試しても良いのですが、その前段の、 HTTP ステータスコード200(成功)を返すかどうかを、まずはテストしてみます。

Feature テストを作ります。
bash:

php artisan make:test HelloTest

作成されたテストファイルを編集します。
tests/Feature/HelloTest.php:

<?php

namespace Tests\Feature;

use Tests\TestCase;

class HelloTest extends TestCase
{
    public function test_レスポンスコードが200(): void
    {
        $response = $this->get('/hello');
        $response->assertStatus(200);
    }
}

$response->assertStatus(200); は、最初から書いてあると思うので、編集するのはメソッド名だけです。
test で始めることを忘れないでください。

テストを実行します。
bash:

php artisan test tests/Feature/HelloTest.php

テストが失敗し、赤い表示になることを確認します。
(たくさんエラーが出てきて驚くかもしれませんが、それが普通なので先に進みます。)

Green1

ルーティングを作成します。
routes/web.php:

<?php

use Illuminate\Support\Facades\Route;

Route::get('/hello', fn() => 'この時点では、何を返しても良い');

テストを再度実行します。
bash:

php artisan test tests/Feature/HelloTest.php

テストが成功し、緑色になったことを確認します。

Refactor1

整理するところはありません。

Red2: Hello World! を返すか

無事、/hello が表示されていることが確認できたので、次にその表示されている内容が Hello World! かどうかを判定するテストを書きます。

テストを書き加えます。
tests/Feature/HelloTest.php:

    public function test_hello_world(): void
    {
        $response = $this->get('/hello');
        $response->assertStatus(200);
        $response->assertSeeText('Hello World!');
    }

テストの失敗を確認します。
bash:

php artisan test tests/Feature/HelloTest.php

Green2

ルーティングファイルを書き換えます。
routes/web.php:

Route::get('/hello', fn() => 'Hello World!');

テストの成功を確認します。
bash:

php artisan test tests/Feature/HelloTest.php

Note

全部が緑になった! という達成感を感じてくれたら、うれしいです。

Refactor2

特に整理整頓の必要はありません。

解説

続きを読む

ルーティングについて

ルーティングは、 web アプリの入り口です。
このファイルが、その後の処理の方向づけを決めます。

Note

なお、その web アプリのすべてのルーティングを調べるには、 php artisan route:list というコマンドがあります。
大変便利なコマンドです。

今回は、短い文字列を返すだけでしたが、実際の web アプリでは、そのようなことはほとんど無いだろうと思います。
これから、処理が複雑になっていくので、その書き方を学んでいきます。


<= 問題を読んだ・解いた・理解したなどのチェックにご利用ください。クリックすると、チェックが変化します。
問題一覧に戻る