第4章 タスクの追加

01.ルート設定とテストのためのコントローラ実装

この章では「タスクの追加」機能を実装しよう。

今回も、「ルートの設定」からだ。

タスク追加画面のためのルート設定

タスクの追加を行なうためには、以下のステップで処理を進めることになる。

  1. タスクの一覧画面から新規作成画面へ遷移
  2. Formから登録内容を受け付けて登録実施
  3. 一覧画面へ再度遷移

今回は、新規作成専用の画面へのルートと、そこからデータの登録を行なうルートが必要だ。 2.から3.へ遷移する時は、更新処理の時と同じ要領でリダイレクトを行なおう。

まずは、新規作成専用の画面の実装から進めよう。 routes/web.phpは下記のようになる。





















 

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Route::get('/tasks', 'TaskController@index');
Route::get('/tasks/{id}', 'TaskController@detail')->where('id', '[0-9]+');
Route::put('/tasks/{id}', 'TaskController@update')->where('id', '[0-9]+');
Route::get('/tasks/new', 'TaskController@new');

ルートの確認のためのテスト

ルートを追加したので、テストを書こう。 tests/Feature/TaskControllerTest.phpにテストメソッドを追加する。
















 
 
 
 
 
 
 
 
 
 
 


<?php

namespace Tests\Feature;

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

class TaskControllerTest extends TestCase
{
    use RefreshDatabase;

()

    /**
     * Get New Task Path Test
     *
     * @return void
     */
    public function testGetNewTaskPath()
    {
        $response = $this->get('/tasks/new');

        $response->assertStatus(200);
    }
}

testGetNewTaskPath()というテストを実装した。 単純に、新規作成の画面を正しく呼び出せるか、というテストだ。

では、実際にテストを実行してみよう。

$ vendor/bin/phpunit
PHPUnit 6.5.8 by Sebastian Bergmann and contributors.

.....F......                                                      12 / 12 (100%)

Time: 17.96 seconds, Memory: 24.00MB

There was 1 failure:

1) Tests\Feature\TaskControllerTest::testGetNewTaskPath
Expected status code 200 but received 500.
Failed asserting that false is true.

/Users/[ユーザ名]/task-manager/task-manager/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestResponse.php:78
/Users/[ユーザ名]/task-manager/task-manager/tests/Feature/TaskControllerTest.php:111

FAILURES!
Tests: 12, Assertions: 26, Failures: 1.

今回も、いつも通りの失敗だ。

ルートに対応したコントローラクラスとメソッドの実装

というわけで、いつも通りにルートに対応したメソッドの仮実装を行なってみよう。

今回はapp/Http/Controllers/TaskController.phpに、new()というメソッドを実装する。












 
 
 
 


<?php

namespace App\Http\Controllers;

use App\Task;
use Illuminate\Http\Request;

class TaskController extends Controller
{
()

    public function new()
    {
        return "new task";
    }
}

仮実装として、"new task"を返すようにした。 テストを実行してみよう。

$ vendor/bin/phpunit
PHPUnit 6.5.8 by Sebastian Bergmann and contributors.

............                                                      12 / 12 (100%)

Time: 20.96 seconds, Memory: 20.00MB

OK (12 tests, 26 assertions)

無事にパスした。

次は、ここから本当のビューを呼び出す処理と、ビューの中身を作成してみよう。

Last Updated (JST): 7/7/2019, 2:32:08 PM