Codeception / Codeception/AspectMock
Cannot was not found by locator
- 主要语言
- PHP
- 星标
- 784
- 派生
- 132
- PR 合并指标
- 30 天内没有已合并 PR
描述
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
贡献指南
这个仓库没有索引到贡献指南
调研方向
从 __bootstrap.php 中的 Yii2 bootstrap 配置开始,重点检查 Kernel::init、includePaths、excludePaths 以及列出的 loadFile 调用。在运行测试时重现 app\controllers\BaseController 和 app\models\MyInterface 的 locator 错误,然后确定所报告的配置是否能够支持这些类。完成的标准是:原因和兼容的解决方案已记录或验证。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- php
- 领域
- testing
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 25/100