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()直接使うなってことなんやなと。横着せずに、ちゃんと外から渡して疎結合にしろってはっきりわかんだね。