Добрый день! Использую GitHub - Codeception/AspectMock: The most powerful and flexible mocking framework for PHPUnit / Codeception. в yii2 проекте (basic шаблон).
Вот мой tests/codeception/_bootstrap.php
<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'test');
defined('YII_TEST_ENTRY_URL') or define('YII_TEST_ENTRY_URL', parse_url(\Codeception\Configuration::config()['config']['test_entry_url'], PHP_URL_PATH));
defined('YII_TEST_ENTRY_FILE') or define('YII_TEST_ENTRY_FILE', dirname(dirname(__DIR__)) . '/web/index-test.php');
require_once(__DIR__ . '/../../vendor/autoload.php');
$kernel = \AspectMock\Kernel::getInstance();
$kernel->init([
'debug' => true,
'includePaths' => [__DIR__.'/../../filters'],
]);
$kernel->loadFile(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
$_SERVER['SCRIPT_FILENAME'] = YII_TEST_ENTRY_FILE;
$_SERVER['SCRIPT_NAME'] = YII_TEST_ENTRY_URL;
$_SERVER['SERVER_NAME'] = parse_url(\Codeception\Configuration::config()['config']['test_entry_url'], PHP_URL_HOST);
$_SERVER['SERVER_PORT'] = parse_url(\Codeception\Configuration::config()['config']['test_entry_url'], PHP_URL_PORT) ?: '80';
Yii::setAlias('@tests', dirname(__DIR__));
Yii::setAlias('@app', dirname(dirname(__DIR__)));
```
Я намеренно включил только директорию filters проекта, т.к. на данный момент мне не нужно мокать другие классы.
Когда запускаю тесты, то получаю:
```
/tests$ codecept run api
Codeception PHP Testing Framework v2.1.4
Powered by PHPUnit 4.8.18 by Sebastian Bergmann and contributors.
Api Tests (1) ------------------------------------------------------------------------------
Try to test (order\GetCest::tryToTest) Ok
--------------------------------------------------------------------------------------------
Time: 831 ms, Memory: 26.50Mb
OK (1 test, 2 assertions)
PHP Fatal error: Class 'yii\base\UnknownClassException' not found in /var/www/iretail/vendor/yiisoft/yii2/BaseYii.php on line 291
PHP Stack trace:
PHP 1. {main}() /home/kaiser/.composer/vendor/codeception/codeception/codecept:0
PHP 2. Symfony\Component\Console\Application->run() /home/kaiser/.composer/vendor/codeception/codeception/codecept:28
PHP 3. yii\base\ErrorHandler->handleFatalError() /var/www/iretail/vendor/yiisoft/yii2/base/ErrorHandler.php:0
PHP 4. spl_autoload_call() /var/www/iretail/vendor/yiisoft/yii2/base/ErrorHandler.php:231
PHP 5. yii\BaseYii::autoload() /var/www/iretail/vendor/yiisoft/yii2/base/ErrorHandler.php:231
PHP 6. spl_autoload_call() /var/www/iretail/vendor/yiisoft/yii2/base/ErrorHandler.php:291
PHP 7. yii\BaseYii::autoload() /var/www/iretail/vendor/yiisoft/yii2/base/ErrorHandler.php:291
```
Т.е. тест успешно проходит, AspectMock успешно отрабатывает. Но при завершении работы кодеспешена валится ошибка, причем пути к файлам верные.
Может быть я неверно настроил AspectMock?