Codeception\Test\Unit 未找到

Codeception\Test\Unit not found

我在使用 Yii2 的 Codeception 方面遇到了一些问题。我刚升级到 Yii 2.0.10,一直在用这个 guide

我收到错误:Codeception\Test\Unit not found in vendor\codeception\base\shim.php。如果我将这个 class 删除,下一个失败是:

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 的新手,所以不确定我做错了什么

据我所知,除了在 codeception.yaml 所在的目录中 php vendor/bin/codecept run 之外,您什么都不用做。

请注意,路径 vendor/bin/codecept 可能因您的情况而异。一般来说,Codeception 会解析您的配置并施展魔法。


没必要知道,但如果您有兴趣:它会解析配置并通过使用自己的 PSR-4 兼容 class 自动加载器实现动态地建立命名空间和路径之间的关系。

看这里 - https://github.com/Codeception/Codeception/blob/2.2/src/Codeception/Configuration.php#L214 and here https://github.com/Codeception/Codeception/blob/2.2/src/Codeception/Util/Autoload.php

在这种情况下,我从 2.0.9 升级到 2.0.10。我不得不作曲删除 yiisoft/yii2-codeceptioncodeception/codeceptioncodeception\verifycodeception\specifycodeception\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