AspectMock icon indicating copy to clipboard operation
AspectMock copied to clipboard

Cannot was not found by locator

Open gglazewski opened this issue 4 years ago • 3 comments

Using Yii2,

As soon as I extend my controllers with a custom class or implement custom interface I get following errors:

Class app\controllers\BaseController was not found by locator
Class app\models\MyInterface was not found by locator

Unfortunately, to keep my tests working I had to remove my interface. But I cannot remove my BaseController.

My Kernel is defined like so in __bootstrap.php

require __DIR__ .'/../vendor/autoload.php';
$kernel = Kernel::getInstance();
$kernel->init([
    'includePaths' => [
        __DIR__ . '/../service',
        __DIR__ . '/../controllers',
        __DIR__ . '/../model',
        __DIR__ . '/../vendor/yiisoft',
    ],
    'excludePaths' => [
        __DIR__ . '/../tests'
    ],
    'cacheDir'  => '/tmp/aopcache',
]);

$kernel->loadFile(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
$kernel->loadFile(__DIR__ . '/../vendor/yiisoft/yii2/base/ErrorException.php');
$kernel->loadFile(__DIR__ . '/../vendor/yiisoft/yii2/base/UnknownClassException.php');

Is this a known problem or am I doing something obviously wrong?

I created SO question as well: https://stackoverflow.com/questions/59751752/error-class-was-not-found-by-locator-when-running-tests

gglazewski avatar Jan 16 '20 07:01 gglazewski

Yii2 does not use a Kernel, so this error is likely not related to Yii

SamMousa avatar Jan 28 '20 12:01 SamMousa

Replace Yii2 autoloader by composer autoloader.

puniserv avatar Jan 28 '20 22:01 puniserv

@SamMousa This Kernel belongs to AspectMock: https://github.com/Codeception/AspectMock/blob/master/src/AspectMock/Kernel.php

Naktibalda avatar Feb 16 '20 15:02 Naktibalda