uiuifree.com

- サイト制作のノウハウと最適化を目指して-

2020.7.30【PHP】LaravelでPhpUnitが動作しない。ReflectionException: Class config does not exist

【PHP】LaravelでPhpUnitが動作しない。ReflectionException: Class config does not exist

Laravel環境でPHPUnitを動作させようとしていたが、いつもはできているケースが全く通らずはまりました。 ReflectionException: Class config does not existとLaravel関連のメソッドを使おうとしても何も通らず。

結論、継承するTestCaseのnamespaceが違っていました。

テストケースの実行
Testing started at 10:43 ...
/usr/local/Cellar/php/7.3.10/bin/php /Users/PhpstormProjects/api/vendor/phpunit/phpunit/phpunit --bootstrap /Users/PhpstormProjects/api/bootstrap/app.php --configuration /Users/PhpstormProjects/api/phpunit.xml --filter "/(Tests\\Unit\\ExampleTest::testBasicTest)( .*)?$/" --test-suffix ExampleTest.php /Users/PhpstormProjects/api/tests/Unit --teamcity
PHPUnit 8.5.8 by Sebastian Bergmann and contributors.


Illuminate\Contracts\Container\BindingResolutionException : Target class [config] does not exist.
 /Users/PhpstormProjects/api/vendor/laravel/framework/src/Illuminate/Container/Container.php:805
 /Users/PhpstormProjects/api/vendor/laravel/framework/src/Illuminate/Container/Container.php:681
 /Users/PhpstormProjects/api/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:785
 /Users/PhpstormProjects/api/vendor/laravel/framework/src/Illuminate/Container/Container.php:629
 /Users/PhpstormProjects/api/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:770
 /Users/PhpstormProjects/api/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:120
 /Users/PhpstormProjects/api/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:276
 /Users/PhpstormProjects/api/tests/Unit/ExampleTest.php:21

 Caused by
 ReflectionException: Class config does not exist

 /Users/PhpstormProjects/api/vendor/laravel/framework/src/Illuminate/Container/Container.php:803
 /Users/PhpstormProjects/api/vendor/laravel/framework/src/Illuminate/Container/Container.php:681
 /Users/PhpstormProjects/api/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:785
 /Users/PhpstormProjects/api/vendor/laravel/framework/src/Illuminate/Container/Container.php:629
 /Users/PhpstormProjects/api/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:770
 /Users/PhpstormProjects/api/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:120
 /Users/PhpstormProjects/api/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:276
 /Users/PhpstormProjects/api/tests/Unit/ExampleTest.php:21



Time: 86 ms, Memory: 8.00 MB


ERRORS!
Tests: 1, Assertions: 0, Errors: 1.
Process finished with exit code 2

間違った例

ExampleTest.php
<?php

namespace Tests\Unit;

use PHPUnit\Framework\TestCase;

class ExampleTest extends TestCase
{

    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {

        var_dump(config('app'));
    }
}

正しい例

ExampleTest.php
<?php

namespace Tests\Unit;

// use PHPUnit\Framework\TestCase;
use Tests\TestCase;

class ExampleTest extends TestCase
{

    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {

        var_dump(config('app'));
    }
}

これでテストケースが通るようになりました、コレ知らないと気づかないですよね。

PROFILE

このサイトを運営してるuiuifreeです。
渋谷のベンチャー企業で2年ほど新規事業を担当した後にフリーランスエンジニアにキャリア転換。
求人サイトの開発が多くエンジニア/看護師/保育士などの分野でサイトを運営しています。

アウトプット中の技術

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)