Memo

メモ > 技術 > フレームワーク: Laravel > テスト・デバッグ

テスト・デバッグ
■デバッグ デバッグモード
.env APP_DEBUG=true
デバッグバー
composer require barryvdh/laravel-debugbar
config/app.php
'providers' => [ Barryvdh\Debugbar\ServiceProvider::class, 'aliases' => [ 'Debugbar' => Barryvdh\Debugbar\Facade::class,
アプリケーションログ /storage/logs Laravel5.5: Laravel Debugbarを使う - Qiita https://qiita.com/sutara79/items/9fd442a81001842aeba1 config/app.php で設定しているドメインと異なるドメインでアクセスすると、デバッグバーは表示されないようなので注意 (正しいドメイン、もしくはIPアドレスでのアクセスなら表示されるみたい) Laravel5.0でlaravel-debugbarを使う - Qiita https://qiita.com/naga1460/items/4a5a5ede493ef008fe90 ■単体テスト テスト: テストの準備 5.4 Laravel https://readouble.com/laravel/5.4/ja/testing.html Laravel5でテスト(PHPUnit) - Qiita https://qiita.com/zaburo/items/839c81a1e166a48fe3fa テストを実行
cd C:\localhost\home\test\public_html\laravel\blog phpunit
実行すると以下のエラーになる
PHP Fatal error: Call to undefined method PHPUnit_Util_Configuration::getTestdoxGroupConfiguration() in C:\localhost\home\test\public_html\laravel\test\vendor\phpunit\phpunit\src\TextUI\TestRunner.php on line 1066
LaravelプロジェクトとJenkinsの連携 - ハマログ https://blog.e2info.co.jp/2017/05/10/laravel_and_jenkins/ PHPUnitのバージョンが問題みたいだが、解説のようにcomposerを実行しても解決せず C:\localhost\home\test\public_html\laravel\test\vendor\phpunit\phpunit\src\TextUI\TestRunner.php //$testdoxGroupConfiguration = $arguments['configuration']->getTestdoxGroupConfiguration(); 1066行目をコメントアウトしたら一応動く。ただし何らかの機能が削られていると思われる テストを実行
phpunit
以下のテストがはじめから作成されているので、これが実行される HTTPテストやChromeドライバーによるテストもできるみたい
\tests\Feature\ExampleTest.php \tests\Unit\ExampleTest.php
設定ファイルを指定してテストを実行
phpunit --configuration phpunit.xml
特定のテストのみ実行
phpunit tests/Feature/RootTest.php --configuration phpunit.xml
テストを作成
php artisan make:test ArticleTest --unit
\test\tests\Unit\ArticleTest.php にテストが作成される 具体的なテストの作成については、以下が参考になる chapter8/app at master - laravel-jp-reference/chapter8 https://github.com/laravel-jp-reference/chapter8/tree/master/app LaravelでHTTPテスト - Qiita https://qiita.com/Frog_woman/items/6a143af0a042dc853e88 ■データベースを利用する単体テスト \config\database.php の「connections」に以下の設定を追加(データベースにテスト時の値が登録されないように、SQLiteのインメモリ機能を利用する)
'testing' => [ 'driver' => 'sqlite', 'database' => ':memory:', 'prefix' => '', 'option' => [ PDO::ATTR_PERSISTENT => true, ], ],
\phpunit.xml テストの際に上記設定を使用する
<env name="DB_CONNECTION" value="testing"/>
テスト実行時 「PHP Fatal error: Class 'Doctrine\DBAL\Driver\PDOSqlite\Driver' not found」 と表示されるようなら、doctrine/dbal をインストールする
composer require doctrine/dbal
以下も参考にする データベースのテスト 5.5 Laravel https://readouble.com/laravel/5.5/ja/database-testing.html laravelでDBテストコードを書く前の設定すべきこと - Qiita https://qiita.com/kuriya/items/4c9dbefc19514f415374 ■ブラウザテスト(Selenium)
$ composer require --dev laravel/dusk … とても時間がかかった。PHP5環境ではインストールできない? Using version ^2.0 for laravel/dusk ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 2 installs, 0 updates, 0 removals - Installing facebook/webdriver (1.4.1): Downloading (100%) - Installing laravel/dusk (v2.0.7): Downloading (100%) Writing lock file Generating optimized autoload files > Illuminate\Foundation\ComposerScripts::postAutoloadDump > @php artisan package:discover Discovered Package: fideloper/proxy Discovered Package: laravel/tinker Discovered Package: laravel/dusk Package manifest generated successfully.
app\Providers\AppServiceProvider.php に登録
php artisan dusk:install
を実行すると、テストの雛形が作成される
php artisan dusk
でテストを実行できる。「--configuration phpunit.xml」のオプションは使えないみたい?
php artisan dusk tests/Browser/AdminLoginTest.php
で特定のテストのみを実行できる
php artisan dusk tests/Browser/AdminLoginTest.php --filter=testStaffLoginSuccess
で特定のテスト内のメソッドのみを実行できる 通常アクセスかテストかを判定するなら、
$_SERVER['HTTP_USER_AGENT']
の値を調べるか ブラウザテスト(Laravel Dusk) 5.4 Laravel https://readouble.com/laravel/5.4/ja/dusk.html Laravel 5.4 で手軽にテストを書こう! | 株式会社インフィニットループ技術ブログ https://www.infiniteloop.co.jp/blog/2017/05/laravel-5-testing/ Laravel 5.4で導入されたLaravel Duskをテスト後にDBリセットさせるようにして試してみた - Qiita https://qiita.com/n_mogi/items/b96ccc1df31aa5fb859a Laravel5でPC/SPを振り分ける方法 - Qiita https://qiita.com/qwe001/items/0064adc3c893f603fe21 【Laravel 5.4】Laravel Duskによるブラウザテストの作成方法 - Qiita https://qiita.com/amymd/items/0a5f2705e29972d0d22e ブラウザテスト(Laravel Dusk) 5.4 Laravel https://readouble.com/laravel/5.4/ja/dusk.html なお 「Your requirements could not be resolved to an installable set of packages.」 のエラーになってインストールできない場合、 以下でインストールできることがある
$ composer require --dev laravel/dusk:"^2.0"
ブラウザテスト(Laravel Dusk) 5.5 Laravel https://readouble.com/laravel/5.5/ja/dusk.html また 「Laravel Facebook\WebDriver\Exception\SessionNotCreatedException: session not created exception: Chrome version must be >= 62.0.3202.0」 のようなエラーが表示される場合、Chromeのバージョンが低い可能性がある Homestead内でupdateを実行する
$ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get dist-upgrade
Laravel-dusk does not work - Stack Overflow https://stackoverflow.com/questions/48471515/laravel-dusk-does-not-work コードによってはテスト時にデータが消去されるので注意 避けたいなら、テスト用にデータベースを作っておく必要があるみたい Laravel DuskでDBデータが飛んだって話(メモ) - Qiita https://qiita.com/Frog_woman/items/6f3581809a38dfe655e4 Laravel5.7: ブラウザテストを記述する - Qiita https://qiita.com/sutara79/items/9190c8444a49842ca25a ■アプリケーションログ アプリケーションにログを記録する際、ログレベルを意識しておくと対応の切り分けなどに役立つ ログレベルは PSR-3 で定義されている 【PHP】PSR-3 Logger Interface(ロガーインタフェース) https://www.ritolab.com/entry/95 どのログレベルを使用するかなど、以下が参考になる ログレベルちゃんと使い分けてますか? - OTOBANK Engineering Blog https://engineering.otobank.co.jp/entry/2016/09/20/181756 Laravelでログを使う場合、以下などを参考にする エラーとログ 5.5 Laravel https://readouble.com/laravel/5.5/ja/errors.html Laravel5.6 での ログ設定について - Qiita https://qiita.com/hrdaya/items/b01d5621937a0710ca64 ログを日付ごとのファイルにする場合、config/app.php もしくは APP_LOG の項目で設定できる 日付ごとにした場合、デフォルトではログは5日間保持される 例えば14日間保持したい場合、config/app.php の
'log' => env('APP_LOG', 'daily'), 'log_level' => env('APP_LOG_LEVEL', 'debug'),
この部分に以下を追加する(Laravel5.5ではデフォルトでは項目自体が存在しないので、項目を追加する)
'log_max_files' => '14',
Laravelのlogファイルを日付ごとに分ける - Qiita https://qiita.com/isao_e/items/304c66f7807f141b6f43

Advertisement