テストを実行してみます。
関連ファイルの場所を確認してみる
パス | 説明 |
---|---|
phpunit.xml | テスト設定ファイル |
tests/Feature/ | 機能テストのテストコードを配置する。 多くのオブジェクトの関連や、JSONエンドポイントへのHTTPリクエストなど幅広い範囲をテストする |
tests/Unit/ | ユニットテストのテストコードを配置する。 極小さい、コードの独立した一部をテストする。 |
テストを実行してみる
phpunitを実行する。全てのテストコードが実行される。
$ phpunit
PHPUnit 6.5.14 by Sebastian Bergmann and contributors.
.. 2 / 2 (100%)
Time: 1.63 seconds, Memory: 12.00MB
OK (2 tests, 2 assertions)
ファイルを指定することで一部のみテストすることができる。
$ phpunit tests/Feature/ExampleTest.php
PHPUnit 6.5.14 by Sebastian Bergmann and contributors.
. 1 / 1 (100%)
Time: 1.56 seconds, Memory: 12.00MB
OK (1 test, 1 assertion)
新しいテストケースを作成してみる
// Featureディレクトリにテストを生成する
$ php artisan make:test UserTest
// Unitディレクトリにテストを生成する
$ php artisan make:test UserTest --unit
テストケースの作成からテストの実行までを試してみる
既存のwelcome.blade.php
を使用してテストを実行してみます。
表示されたページにHello, Laravel
の文字が含まれるかテストしてみます。
テストファイルを作成します。
$ php artisan make:test WelcomeTest
Test created successfully.
テストコードを記述します。textExample
の中身を次の通り書きかえます。
使用しているアサートはこんな感じです。
assertSeeText ... 指定した文字列がレスポンステキストに含まれていることをアサート。
assertStatus ... クライアントのレスポンスが指定したコードであることをアサート。
tests/Feature/WelcomeTest
<?php
namespace Tests\Feature;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
class WelcomeTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testExample()
{
$response = $this->get('/');
$response->assertSeeText("Hello, Laravel")
->assertStatus(200);
}
}
テストを実行します。ウェルカムページにHello, Laravel
が含まれないのでテストは失敗します。
vagrant@homestead:~/code/testapp$ phpunit tests/Feature/WelcomeTest.php
PHPUnit 6.5.14 by Sebastian Bergmann and contributors.
F 1 / 1 (100%)
Time: 1.6 seconds, Memory: 12.00MB
There was 1 failure:
1) Tests\Feature\WelcomeTest::testExample
Failed asserting that '\n
(省略)
' contains "Hello, Laravel".
/home/vagrant/code/testapp/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestResponse.php:266
/home/vagrant/code/testapp/tests/Feature/WelcomeTest.php:20
FAILURES!
Tests: 1, Assertions: 1, Failures: 1.
welcome.blade.php
を編集します。
welcome.blade.php
...
<div class="content">
<div class="title m-b-md">
Hello, Laravel
</div>
...
もう一度テストを実行します。今度は成功します。
vagrant@homestead:~/code/testapp$ phpunit tests/Feature/WelcomeTest.php
PHPUnit 6.5.14 by Sebastian Bergmann and contributors.
. 1 / 1 (100%)
Time: 1.56 seconds, Memory: 12.00MB
OK (1 test, 2 assertions)