Php 方面模拟';Go\ParserReflection\ReflectionFile';找不到
我正在尝试将方面模拟与codeception测试结合使用 从他们的文档中不清楚如何配置 将AspectMock\Kernel包含到tests/_bootstrap.php中 我没有这样的档案。我应该创建它吗?我应该把它放在哪里 我的codeception目录结构是: 测试/联合验收/验收 我在test/codeception/acceptance中有SummaryCest.php文件 因为我没有_bootstrap.php文件,所以我决定在声明类之前尝试SummaryCest: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
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问题看起来像是自动加载问题。有帮助吗?