Аспект макет ‘Go \ ParserReflection \ ReflectionFile’ не найден

Я пытаюсь использовать аспект макет с тестами кодового восприятия.

Из их документации не понятно, как настроить.

https://github.com/Codeception/AspectMock

Включите AspectMock \ Kernel в tests / _bootstrap.php.

У меня нет такого файла. Должен ли я создать это? Где я должен включить это?

Моя структура каталогов кодирования:

тест / codeception / прием.

У меня есть файл SummaryCest.php в тестовом / кодовом восприятии / приемке.

Поскольку у меня нет файла _bootstrap.php, я решил попробовать в SummaryCest — перед объявлением класса:

include __DIR__.'/../../../vendor/autoload.php'; // composer autoload

$kernel = \AspectMock\Kernel::getInstance();
$kernel->init([
'debug' => true,
'includePaths' => [__DIR__.'/../../../'],
'excludePaths' => [__DIR__.'../../../vendor'],
'cacheDir'  => '/tmp/datamanager',
]);

Я не знаю, действительно ли мне нужно исключить каталог поставщиков, но я видел такие предложения. Если это обязательно, это должно быть написано, вероятно, в readme, который я не видел.

В includePaths должны быть видны все файлы моего проекта.

У меня есть функция в SummaryCest.php

public function correctSummaryCounts(AcceptanceTester $I)
{
\AspectMock\Test::double(SummaryController::class, ['get' => null]);
}

и когда я запускаю тест

php codecept.phar run test/codeception/acceptance/SummaryCest.php

Я получаю сообщение

==== Redirecting to Composer-installed version in vendor/codeception ====
Codeception PHP Testing Framework v2.3.5
Powered by PHPUnit 6.2.4 by Sebastian Bergmann and contributors.
PHP Fatal error:  Uncaught Error: Class 'Go\ParserReflection\ReflectionFile' not found in /var/www/warehouseDataManager/vendor/codeception/aspect-mock/src/AspectMock/Intercept/BeforeMockTransformer.php:16
Stack trace:
#0 /var/www/warehouseDataManager/vendor/goaop/framework/src/Instrument/Transformer/CachingTransformer.php(124): AspectMock\Intercept\BeforeMockTransformer->transform(Object(Go\Instrument\Transformer\StreamMetaData))
#1 /var/www/warehouseDataManager/vendor/goaop/framework/src/Instrument/Transformer/CachingTransformer.php(83): Go\Instrument\Transformer\CachingTransformer->processTransformers(Object(Go\Instrument\Transformer\StreamMetaData))
#2 /var/www/warehouseDataManager/vendor/goaop/framework/src/Instrument/ClassLoading/SourceTransformingLoader.php(134): Go\Instrument\Transformer\CachingTransformer->transform(Object(Go\Instrument\Transformer\StreamMetaData))
#3 /var/www/warehouseDataManager/vendor/goaop/framework/src/Instrument/ClassLoading/SourceTransformingLoader.php(101): Go\Instrument\ClassLoading\SourceTran in /var/www/warehouseDataManager/vendor/codeception/aspect-mock/src/AspectMock/Intercept/BeforeMockTransformer.php on line 16

Можете ли вы объяснить мне, как настроить это?

Также я видел в readme

$userModel = test::double('UserModel', ['tableName' => 'my_users']);

но тест даже не найден. Поэтому я попытался использовать \ AspectMock \ Test, который по крайней мере найден.

Обратите внимание, что ошибка выдается еще до запуска моей тестовой функции. Когда я попытался запустить до объявления класса

$kernel->init();

это уже дает ту же ошибку.

1

Решение

_bootstrap.php файлы больше не создаются автоматически Codeception.
Чтобы включить их, вы должны добавить

settings:
bootstrap: _bootstrap.php

в файл codeception.yml
и вручную создайте файлы _bootstrap.php в каталоге тестов и в каждом наборе.

http://codeception.com/docs/reference/Configuration

Проблема ReflectionFile выглядит как проблема автозагрузки.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]