未找到Codeception \ Test \ Unit

时间:2016-10-24 15:17:23

标签: unit-testing yii2 phpunit codeception

我在使用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完全不熟悉,所以不确定我做错了什么

2 个答案:

答案 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#L214https://github.com/Codeception/Codeception/blob/2.2/src/Codeception/Util/Autoload.php

答案 1 :(得分:0)

在这种情况下,我从2.0.9升级 - &gt; 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