PHPUnit + Laravel = ? ドシンプルな試験 の話

どどどど、ドレッドノート!

さて、今回は激烈シンプルな試験を作りました。

簡単なクラスは下です

<?php
namespace App;

class Hello
{

    public function say(){
        return "Hello";
    }

    public function echo($word){
        return $word;
    }
}

Appの下にでも置いてください。

んでもって試験です

<?php

namespace Tests\Unit;

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

class HelloTest extends TestCase
{
    public function test_say(){
        $hello = new Hello();
        $this->assertEquals('Hello',$hello->say());
    }
    public function test_echo(){
        $hello = new Hello();
        $this->assertEquals('Hello',$hello->echo('Hello'));
        $this->assertEquals('Wow',$hello->echo('Wow'));
    }
}

testsの下の

Unit/HelloTest.phpにでも書いてください

んで、試験

$ phpunit
PHPUnit 8.3.5 by Sebastian Bergmann and contributors.

.....                                                               5 / 5 (100%)

Time: 332 ms, Memory: 26.00 MB

OK (5 tests, 6 assertions)

神かよ!って位シンプルです。

5 tests, 6 assertionsってのがポイントです。
増えてるでしょw

次回はTDDかな

… シンプルすぎたのでちょっとだけ解説

よみゃぁ〜分かりますが、Helloには二つの関数sayとechoがあります。
sayは’Hello’の文字を返して、echoは引数の文字列を返します。

        $this->assertEquals('Hello',$hello->say());

では、先のHelloを返すのを確認しています。
this->assertEqualsは読んで字のごとく、第一引数と第二引数が同じであるかを確認しています。もし違うなら先のOKがfail?になります

で、テストの関数名ですが、test〜 で始めると試験として認識してくれます。

laravelでデフォルトで作成されるphpunit.xmlではUnitとFeutureのディレクトリ下 〜Test.phpを試験として認識してくれます

TDDは我が同士のケント・ベックが…

まじで書くことないので以上です!

Have a Good PHPUnit Life!