テスト対象のコードの中に、configを取得して使用するコードがある場合の対応方法
テストごとにconfigをセットできる
例えばconfig/app.php
にあるname
を取得するコードがあるとする
$name = config('app.name');
テストコードを書く際に、ここの値により処理が変わることをテストしたい場合、テスト毎にconfigを値を設定できる
use Illuminate\Support\Facades\Config;
// 省略
public function test1() {
// ここでテストコードで取得するconfigをセットする
Config::set('app.name', 'app_name');
$name = Config::get('app.name'); // app_nameが取得できる
// 処理
$this-assertTrue(true); // テスト
}
public function test2() {
// configがセットされていない場合
Config::set('app.name', '');
$name = Config::get('app.name'); // ""になる
}
tinkerで動作を確認
$ php artisan tinker
Psy Shell v0.9.6 (PHP 7.2.14 — cli) by Justin Hileman
>>> Config::get('app.name');
=> "Laravel"
>>> Config::set('app.name', 'app_name');
=> null
>>> Config::get('app.name');
=> "app_name"
// こちらでもok
>>> config('app.name');
=> "app_name"