Php 方面模拟';Go\ParserReflection\ReflectionFile';找不到

Php 方面模拟';Go\ParserReflection\ReflectionFile';找不到,php,codeception,goaop,Php,Codeception,Goaop,我正在尝试将方面模拟与codeception测试结合使用 从他们的文档中不清楚如何配置 将AspectMock\Kernel包含到tests/_bootstrap.php中 我没有这样的档案。我应该创建它吗?我应该把它放在哪里 我的codeception目录结构是: 测试/联合验收/验收 我在test/codeception/acceptance中有SummaryCest.php文件 因为我没有_bootstrap.php文件,所以我决定在声明类之前尝试SummaryCest: include

我正在尝试将方面模拟与codeception测试结合使用

从他们的文档中不清楚如何配置

将AspectMock\Kernel包含到tests/_bootstrap.php中

我没有这样的档案。我应该创建它吗?我应该把它放在哪里

我的codeception目录结构是:

测试/联合验收/验收

我在test/codeception/acceptance中有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',
]);
我不知道我是否真的需要排除供应商目录,但我看到了这样的建议。如果这是强制性的,它应该写在我没有看到的自述中

在IncludePath中,应该可以看到所有我的项目文件

我在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
你能解释一下如何配置这个吗

我在自述中也看到了

$userModel = test::double('UserModel', ['tableName' => 'my_users']);
但这项测试甚至没有找到。所以我尝试使用\AspectMock\Test,至少找到了

请注意,甚至在运行我的测试函数之前都会抛出错误。当我尝试在类声明之前运行时

$kernel->init();

它已经给出了相同的错误。

\u bootstrap.php
文件不再由Codeception自动创建。 要启用它们,您必须添加

settings:
    bootstrap: _bootstrap.php
到codeception.yml文件 并在tests目录和每个套件中手动创建_bootstrap.php文件


ReflectionFile问题看起来像是自动加载问题。

有帮助吗?