0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Laravel][Homestead] テストを実行してみる

Last updated at Posted at 2019-07-08

テストを実行してみます。

関連ファイルの場所を確認してみる

パス 説明
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)

参考

Laravel Document

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?