Laravelで単体テスト(データベース編|簡易バージョン)

前回、LaravelでHTTPリクエストのテストをやりました。

しかし、実際のテストではDB関係やWebAPIのテストが多かったりします。

今回は簡易的にDBのテストをやってみます。

 

演習

1.usersテーブルにサンプルレコードを挿入
2.挿入したサンプルレコードを条件検索
3.サンプルレコードを削除

上記の内容のテストを作成して実行してみます。

 

手順

 

テストのスケルトンを作成


// 前回の演習で作成してる人はスキップ
php artisan make:test PracticeTest

 

テストコードの記述

プロジェクト直下のtestsディレクトリに PracticeTest.php が作成されるのでテストコードを記述していきます。


:
public function testExample()
{
    // レコード新規作成
    $user = new \App\User;
    $user->name = "手巣戸太郎";
    $user->email = "taro@test.com";
    $user->password = \Hash::make('test_password');
    $user->save();

    // SELECT
    $readUser = \App\User::where('name','手巣戸太郎')->first();
    $this->assertNotNull($readUser); // データが取得できたかテスト
    $this->assertTrue(\Hash::check('test_password', $readUser->password));

    // レコード削除
    \App\User::where('email', 'taro@test.com')->delete();
}
:

 

解説

平文のパスワードと、DBに保存されているハッシュ化されたパスワードを比較したいときはHash::check()を使います。


\Hash::cehck( 'test_password', $readUser->password)

 

テストでは上記のパスワードチェックの返り値をアサーション($this->assertTrue)しています。

PHPUnitの主なAssertメソッドには「assertTrue」「asertFalse」「assertNull($val)」「assertRegExp($pattern,$str)」などあります。

よく使うのは「assertEquals()」で実はこれだけでもなんとかなります。

PHPUnitの主なAssertメソッド一覧

そして、最後にサンプルレコードを削除します。

 

実行


$ ./vendor/bin/phpunit tests/PracticeTest.php

 

 
上記のように "OK" が表示されていたら、コード自体には問題がないことが確認できます。

以上です。

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-実践知識