我在使用Yii2进行Codeception时遇到了一些问题。我刚刚升级到Yii 2.0.10并且一直使用这个guide
我收到错误:Codeception\Test\Unit not found in vendor\codeception\base\shim.php
。如果我把这个课程拿出来,下一个课程就会失败,那就是:
namespace Codeception\Module {
class Symfony2 extends Symfony {
}
这就是我做的:我创建了一个文件 test.php 并将其放在我的配置文件夹中:
<?php
// config/test.php
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/main.php'),
require(__DIR__ . '/main-local.php'),
[
'id' => 'app-tests',
'components' => [
'db1' => require(__DIR__ . '/db.php'),
]
]
);
return $config;
codeception.yaml
actor: Tester
paths:
tests: tests
log: tests/_output
data: tests/_data
helpers: tests/_support
settings:
bootstrap: _bootstrap.php
memory_limit: 1024M
colors: true
modules:
config:
Yii2:
configFile: 'config/test.php'
unit.suite.yml
class_name: UnitTester
modules:
enabled:
- Asserts
- Yii2:
part: [orm, email]
我对Codeception完全不熟悉,所以不确定我做错了什么
答案 0 :(得分:1)
据我记得,除php vendor/bin/codecept run
之外,您必须在codeception.yaml
目录中执行任何操作。
请注意,路径vendor/bin/codecept
可能会因您的情况而异。一般来说,Codeception将解析您的配置并发挥神奇作用。
没有必要知道,但如果您感兴趣:它会解析配置并使用自己的PSR-4兼容类自动加载器实现动态建立命名空间和路径之间的关系。
看看这里 - https://github.com/Codeception/Codeception/blob/2.2/src/Codeception/Configuration.php#L214和https://github.com/Codeception/Codeception/blob/2.2/src/Codeception/Util/Autoload.php
答案 1 :(得分:0)
在这种情况下,我从2.0.9升级 - &gt; 2.0.10。我不得不将作曲家移除yiisoft/yii2-codeception
,codeception/codeception
,codeception\verify
,codeception\specify
,codeception\base
。
我复制了测试folder structure。在根项目中更改了我的composer.json以包含:
"require-dev": {
"yiisoft/yii2-debug": "*",
"yiisoft/yii2-gii": "*",
"yiisoft/yii2-faker": "*",
"codeception/base": "^2.2.3",
"codeception/verify": "~0.3.1",
"codeception/specify": "~0.4.3"
},
我还将test.php和test_db.php文件添加到/ config