概要
同時に使っていたら少しずつ違って混乱したので、メモ
環境
- laravel 6.7.0 / PHPUnit 8.5.0
- laravel 5.8 / PHPUnit 7.5
をそれぞれ使い比べた
特定の環境下のみでテストは実行したい
setUpBeforeClassに定義する。
実行順からして、setUpBeforeClass内では一手間(後述)加えないとlaravelのヘルパーは使えない。
との話でしたが、 laravel 6.7 / PHPUnit 8.5
では問題ありませんでした。
laravel6、またはPHPUnit8から仕様が変わっているのではと思います。
publicstaticfunctionsetUpBeforeClass():void{parent::setUpBeforeClass();if(config('app.env')==='local'){// ごにょごにょ}}
dataProviderでEloquentなどlaravelの機能使いたい
dataProviderはsetUpBeforeClassよりも先に実行されるためlaravelのクラス等が使用出来ないので一手間使う。
こちらは laravel 6.7 / PHPUnit 8.5
でもエラーが発生した。
laravelの初期化を行うメソッドを実行するか、
publicfunctionaddProvider(){$this->refreshApplication();}
クロージャ内ならば実行出来る。
publicfunctionaddProvider(){return['test1'=>function(){returnArticle::all();},'test2'=>function(){returnArticle::all();}]}