【Laravel6】フィーチャーテスト
タグ:
Laravel
フィーチャーテストの準備
フィーチャーテストではHTTPリクエストが問題なく動作しているかを確認します。
今回はサンプルのAPIを作ってみます。APIはroutes/api.php
にURIを設定します。
routes/api.php
<?php use Illuminate\Http\Request; Route::get('/ping',function(){ return response()->json(['message' => 'pong']); });
サーバーを起動し、上記のAPIが取得できるかをcurlコマンド
で確認します。
なお、
curl -v http://localhost/api/ping -w "\n"
> GET /api/ping HTTP/1.1
> Host:localhost
> User-Agent: curl/7.74.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Host: localhost
< Date: Thu, 09 Dec 2021 02:54:46 GMT
< Connection: close
< X-Powered-By: PHP/8.0.12
< Cache-Control: no-cache, private
< Date: Thu, 09 Dec 2021 02:54:46 GMT
< Content-Type: application/json
< X-RateLimit-Limit: 60
< X-RateLimit-Remaining: 59
<
* Closing connection 0
{"message":"pong"}
テストを作成する
下記のコマンドで、Featureフォルダの中にAPIフォルダとPingTest.phpを作ります。
今回は,--unit
オプションは付けないでください。
php artisan make:test API/PingTest
tests/Feature/API/PingTest
<?php namespace Tests\Feature\API; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Foundation\Testing\WithFaker; use Tests\TestCase; class PingTest extends TestCase { /** * A basic feature test example. * * @return void */ public function testExample() { $response = $this->get('/'); $response->assertStatus(200); } }
テストを実行するファイルでは、
また、クラス名とファイル名はTestで終わる必要があります。
作成されたコードでは、assertTrue()
というメソッドがあります。
これは、
SapleTest.php
<?php namespace Tests\Unit; use PHPUnit\Framework\TestCase; class SampleTest extends TestCase { /** * A basic unit test example. * * @return void */ public function testExample() { $this->assertTrue(true); } }
PHP Unitを実行する
このSampleTest.phpを下記のコマンドで実行してみます。
./vendor/bin/phpunit tests/Unit/SampleTest.php
実行結果
PHPUnit 9.5.10 by Sebastian Bergmann and contributors.
. 1 / 1 (100%)
Time: 00:00.020, Memory: 6.00 MB
OK (1 test, 1 assertion)