我试图使用方面模拟与共同欺骗测试。
从他们的文档来看,还不清楚如何配置。
https://github.com/Codeception/AspectMock
将AspectMock\Kernel包含到test/_bootstrap.php中。
我没有这样的档案。我应该创造它吗?我应该把它包括在哪里?
我的同谋欺骗目录结构是:
测试/欺骗/接受。
我在测试/欺骗/接受中有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',
]);我不知道我真的需要排除供应商目录,但我看到了这样的建议。如果这是强制性的,它应该是写在自述,但我没有看到。
在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你能解释一下怎么配置这个吗?
我也在自述中看到过
$userModel = test::double('UserModel', ['tableName' => 'my_users']);但连测试都找不到。所以我尝试使用\AspectMock\Test,这至少是找到的。
注意,即使在运行我的测试函数之前,也会抛出错误。当我试着在课堂声明之前运行时
$kernel->init();它已经给出了同样的错误。
发布于 2017-09-19 10:57:54
_bootstrap.php文件不再通过协同欺骗自动创建。要启用它们,您必须添加
settings:
bootstrap: _bootstrap.phpcodeception.yml文件,并在测试目录和每个套件中手动创建_bootstrap.php文件。
http://codeception.com/docs/reference/Configuration
ReflectionFile问题看起来像自动渲染问题。
https://stackoverflow.com/questions/46298102
复制相似问题