Laravel テストコードを書いてみよう
目的
- Laravelのフューチャーテストコードの書き方をまとめる
実施環境
- ハードウェア環境
- ハードウェア環境
項目 | 情報 |
---|---|
OS | macOS Catalina(10.15.5) |
ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
プロセッサ | 2 GHz クアッドコアIntel Core i5 |
メモリ | 32 GB 3733 MHz LPDDR4 |
グラフィックス | Intel Iris Plus Graphics 1536 MB |
- ソフトウェア環境
項目 | 情報 | 備考 |
---|---|---|
PHP バージョン | 7.4.8 | Homwbrewを用いて導入 |
Laravel バージョン | 8.6.0 | commposerを用いてこちらの方法で導入→Mac Laravelの環境構築を行う |
MySQLバージョン | 8.0.19 for osx10.13 on x86_64 | Homwbrewを用いてこちらの方法で導入→Mac HomebrewでMySQLをインストールする |
前提条件
- 実施環境と同じ、もしくは準ずる環境が構築されていること。
前提情報
- Laravelのテストはフューチャーテストとユニットテストが存在しこの記事ではフューチャーテストの方法を紹介する。
- MacのローカルにLaravelアプリを作成し
$ php artisan serve
コマンドを用いてローカルサーバを起動して確認するものする。
- 「特定の文字がビューに表示されているか」と「Httpステータスコードの200が帰ってくるか」を確認する。
概要
- アプリの作成
- ルート情報の記載
- コントローラーファイルの作成と記載
- ビューファイルの作成と記載
- テストコードの作成と記載
- テストの実行
詳細
-
アプリの作成
-
任意のディレクトリで下記コマンドを実行してLaravelアプリを作成する。
$ laravel new feature_test
先のコマンドで作成されたfeature_test
ディレクトリに移動する。
-
ルート情報の記載
-
feature_testディレクトリで下記コマンドを実行してルーティングファイルを開く。
$ vi routes/web.php
-
下記のルーティング情報を追記する。
feature_test/routes/web.php
Route::get('/hello', 'App\Http\Controllers\HelloController@index');
-
追記後のルーティングファイルの内容を下記に記載する。
feature_test/routes.web.php
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| 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('/hello', 'App\Http\Controllers\HelloController@index');
-
コントローラーファイルの作成と記載
-
feature_testディレクトリで下記コマンドを実行してコントローラファイルを作成する。
$ php artisan make:controller HelloController
-
feature_testディレクトリで下記コマンドを実行して先に作成したコントローラファイルを開く。
$ vi app/Http/Controllers/HelloController.php
-
開いたコントローラファイルに下記のアクションを追記する。
feature_test/app/Http/Controllers/HelloController.php
public function index()
{
return view('hello/index');
}
-
追記後のコントローラファイルの内容を下記に記載する。
feature_test/test/Http/Controllers/HelloController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HelloController extends Controller
{
public function index()
{
return view('hello/index');
}
}
-
ビューファイルの作成と記載
-
feature_testディレクトリで下記コマンドを実行してビューファイルを格納するディレクトリを作成する。
$ mkdir resources/views/hello
-
feature_testディレクトリで下記コマンドを実行してビューファイルを作成する。
$ vi resources/views/hello/index.blade.php
-
開いたファイルに下記の内容を記載する。
resources/views/hello/index.blade.php
<h1>hello japan!</h1>
-
feature_testディレクトリで下記コマンドを実行してローカルサーバを起動する。
$ php artisan serve
-
下記にアクセスして「Hello japan!」の文字が表示されていることを確認する。
-
テストコードの作成と記載
-
feature_testディレクトリで下記コマンドを実行してテストコード用のファイルを作成する。
$ php artisan make:test HelloIndexPageTest
-
feature_testディレクトリで下記コマンドを実行して先に作成したテストコードファイルを開く。
$ vi tests/Feature/HelloIndexPageTest.php
-
開いたテストコードファイルを下記の様に追記・修正をする。
feature_test/tests/Feature/HelloIndexPageTest.php
<?php
namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;
class HelloIndexPageTest extends TestCase
{
/**
* A basic feature test example.
*
* @return void
*/
public function testStatusCode()
{
$response = $this->get('/hello');
$response->assertStatus(200);
}
public function testBody()
{
$response = $this->get('/hello');
$response->assertSeeText('hello japan!');
}
}
-
テストの実行
-
feature_testディレクトリで下記コマンドを実行してテストを実行する。
$ vendor/bin/phpunit tests/Feature/HelloIndexPageTest.php
-
下記の様に出力されればテストは完了であり、当該ページはテスト条件を満たしている。
OK (2 tests, 2 assertions)
参考文献
- Laravelのテストはフューチャーテストとユニットテストが存在しこの記事ではフューチャーテストの方法を紹介する。
- MacのローカルにLaravelアプリを作成し
$ php artisan serve
コマンドを用いてローカルサーバを起動して確認するものする。 - 「特定の文字がビューに表示されているか」と「Httpステータスコードの200が帰ってくるか」を確認する。
概要
- アプリの作成
- ルート情報の記載
- コントローラーファイルの作成と記載
- ビューファイルの作成と記載
- テストコードの作成と記載
- テストの実行
詳細
-
アプリの作成
-
任意のディレクトリで下記コマンドを実行してLaravelアプリを作成する。
$ laravel new feature_test
先のコマンドで作成されたfeature_test
ディレクトリに移動する。
-
ルート情報の記載
-
feature_testディレクトリで下記コマンドを実行してルーティングファイルを開く。
$ vi routes/web.php
-
下記のルーティング情報を追記する。
feature_test/routes/web.php
Route::get('/hello', 'App\Http\Controllers\HelloController@index');
-
追記後のルーティングファイルの内容を下記に記載する。
feature_test/routes.web.php
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| 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('/hello', 'App\Http\Controllers\HelloController@index');
-
コントローラーファイルの作成と記載
-
feature_testディレクトリで下記コマンドを実行してコントローラファイルを作成する。
$ php artisan make:controller HelloController
-
feature_testディレクトリで下記コマンドを実行して先に作成したコントローラファイルを開く。
$ vi app/Http/Controllers/HelloController.php
-
開いたコントローラファイルに下記のアクションを追記する。
feature_test/app/Http/Controllers/HelloController.php
public function index()
{
return view('hello/index');
}
-
追記後のコントローラファイルの内容を下記に記載する。
feature_test/test/Http/Controllers/HelloController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HelloController extends Controller
{
public function index()
{
return view('hello/index');
}
}
-
ビューファイルの作成と記載
-
feature_testディレクトリで下記コマンドを実行してビューファイルを格納するディレクトリを作成する。
$ mkdir resources/views/hello
-
feature_testディレクトリで下記コマンドを実行してビューファイルを作成する。
$ vi resources/views/hello/index.blade.php
-
開いたファイルに下記の内容を記載する。
resources/views/hello/index.blade.php
<h1>hello japan!</h1>
-
feature_testディレクトリで下記コマンドを実行してローカルサーバを起動する。
$ php artisan serve
-
下記にアクセスして「Hello japan!」の文字が表示されていることを確認する。
-
テストコードの作成と記載
-
feature_testディレクトリで下記コマンドを実行してテストコード用のファイルを作成する。
$ php artisan make:test HelloIndexPageTest
-
feature_testディレクトリで下記コマンドを実行して先に作成したテストコードファイルを開く。
$ vi tests/Feature/HelloIndexPageTest.php
-
開いたテストコードファイルを下記の様に追記・修正をする。
feature_test/tests/Feature/HelloIndexPageTest.php
<?php
namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;
class HelloIndexPageTest extends TestCase
{
/**
* A basic feature test example.
*
* @return void
*/
public function testStatusCode()
{
$response = $this->get('/hello');
$response->assertStatus(200);
}
public function testBody()
{
$response = $this->get('/hello');
$response->assertSeeText('hello japan!');
}
}
-
テストの実行
-
feature_testディレクトリで下記コマンドを実行してテストを実行する。
$ vendor/bin/phpunit tests/Feature/HelloIndexPageTest.php
-
下記の様に出力されればテストは完了であり、当該ページはテスト条件を満たしている。
OK (2 tests, 2 assertions)
参考文献
-
アプリの作成
-
任意のディレクトリで下記コマンドを実行してLaravelアプリを作成する。
$ laravel new feature_test
先のコマンドで作成された
feature_test
ディレクトリに移動する。
-
-
ルート情報の記載
-
feature_testディレクトリで下記コマンドを実行してルーティングファイルを開く。
$ vi routes/web.php
-
下記のルーティング情報を追記する。
feature_test/routes/web.phpRoute::get('/hello', 'App\Http\Controllers\HelloController@index');
-
追記後のルーティングファイルの内容を下記に記載する。
feature_test/routes.web.php<?php use Illuminate\Support\Facades\Route; /* |-------------------------------------------------------------------------- | 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('/hello', 'App\Http\Controllers\HelloController@index');
-
-
コントローラーファイルの作成と記載
-
feature_testディレクトリで下記コマンドを実行してコントローラファイルを作成する。
$ php artisan make:controller HelloController
-
feature_testディレクトリで下記コマンドを実行して先に作成したコントローラファイルを開く。
$ vi app/Http/Controllers/HelloController.php
-
開いたコントローラファイルに下記のアクションを追記する。
feature_test/app/Http/Controllers/HelloController.phppublic function index() { return view('hello/index'); }
-
追記後のコントローラファイルの内容を下記に記載する。
feature_test/test/Http/Controllers/HelloController.php<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class HelloController extends Controller { public function index() { return view('hello/index'); } }
-
-
ビューファイルの作成と記載
-
feature_testディレクトリで下記コマンドを実行してビューファイルを格納するディレクトリを作成する。
$ mkdir resources/views/hello
-
feature_testディレクトリで下記コマンドを実行してビューファイルを作成する。
$ vi resources/views/hello/index.blade.php
-
開いたファイルに下記の内容を記載する。
resources/views/hello/index.blade.php<h1>hello japan!</h1>
-
feature_testディレクトリで下記コマンドを実行してローカルサーバを起動する。
$ php artisan serve
-
下記にアクセスして「Hello japan!」の文字が表示されていることを確認する。
-
-
テストコードの作成と記載
-
feature_testディレクトリで下記コマンドを実行してテストコード用のファイルを作成する。
$ php artisan make:test HelloIndexPageTest
-
feature_testディレクトリで下記コマンドを実行して先に作成したテストコードファイルを開く。
$ vi tests/Feature/HelloIndexPageTest.php
-
開いたテストコードファイルを下記の様に追記・修正をする。
feature_test/tests/Feature/HelloIndexPageTest.php<?php namespace Tests\Feature; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Foundation\Testing\WithFaker; use Tests\TestCase; class HelloIndexPageTest extends TestCase { /** * A basic feature test example. * * @return void */ public function testStatusCode() { $response = $this->get('/hello'); $response->assertStatus(200); } public function testBody() { $response = $this->get('/hello'); $response->assertSeeText('hello japan!'); } }
-
-
テストの実行
-
feature_testディレクトリで下記コマンドを実行してテストを実行する。
$ vendor/bin/phpunit tests/Feature/HelloIndexPageTest.php
-
下記の様に出力されればテストは完了であり、当該ページはテスト条件を満たしている。
OK (2 tests, 2 assertions)
-
参考文献
Author And Source
この問題について(Laravel テストコードを書いてみよう), 我々は、より多くの情報をここで見つけました https://qiita.com/miriwo/items/4b78e91cec083509a5e7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .