カテゴリー
Laravel

UnitTestでconfig()が使えないンゴ…

LaravelのEloquentのUnitTestを書いていて、Eloquentの中にconfig()を利用するものがあったんやけども、そこがエラーになった。

 Target class [config] does not exist.

  at vendor/laravel/framework/src/Illuminate/Container/Container.php:807
    803| 
    804|         try {
    805|             $reflector = new ReflectionClass($concrete);
    806|         } catch (ReflectionException $e) {
  > 807|             throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
    808|         }
    809| 
    810|         // If the type is not instantiable, the developer is attempting to resolve
    811|         // an abstract type such as an Interface or Abstract Class and there is

コンテナにconfigが登録されてないでってことらしいで。ということなので、UnitTest実行時にコンテナに登録してみた。

app()->bind('config', function () {
                return new class {
                    public function get(...$args)
                    {
                        return 'なんてすごいんだ……(恍惚)';
                    }
                };
            });

とりあえずテキストが返ればよかったので、こんな感じで解決できた。

やっぱりEloquentの中でconfig()直接使うなってことなんやなと。横着せずに、ちゃんと外から渡して疎結合にしろってはっきりわかんだね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です