我正在尝试使用方面模拟和代码测试。
从他们的文档中不清楚如何配置。
https://github.com/Codeception/AspectMock
将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',
]);
我不知道我是否真的需要排除供应商目录,但我看到了这样的建议。如果这是强制性的,那么它应该写在我自己没看到的自述文件中。
在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();
它已经给出了同样的错误。
答案 0 :(得分:1)
_bootstrap.php
个文件。
要启用它们,您必须添加
settings:
bootstrap: _bootstrap.php
到codeception.yml文件 并在tests目录和每个套件中手动创建_bootstrap.php文件。
http://codeception.com/docs/reference/Configuration
ReflectionFile问题看起来像自动加载问题。