首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方面模拟'Go\ParserReflection\ReflectionFile‘未找到

方面模拟'Go\ParserReflection\ReflectionFile‘未找到
EN

Stack Overflow用户
提问于 2017-09-19 10:27:42
回答 1查看 352关注 0票数 1

我试图使用方面模拟与共同欺骗测试。

从他们的文档来看,还不清楚如何配置。

https://github.com/Codeception/AspectMock

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

我没有这样的档案。我应该创造它吗?我应该把它包括在哪里?

我的同谋欺骗目录结构是:

测试/欺骗/接受。

我在测试/欺骗/接受中有SummaryCest.php文件。

由于我没有_bootstrap.php文件,所以在声明类之前,我决定尝试使用SummaryCest:

代码语言:javascript
复制
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中有功能

代码语言:javascript
复制
public function correctSummaryCounts(AcceptanceTester $I)
{
    \AspectMock\Test::double(SummaryController::class, ['get' => null]);
}

当我运行测试时

代码语言:javascript
复制
php codecept.phar run test/codeception/acceptance/SummaryCest.php 

我收到消息

代码语言:javascript
复制
==== 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

你能解释一下怎么配置这个吗?

我也在自述中看到过

代码语言:javascript
复制
$userModel = test::double('UserModel', ['tableName' => 'my_users']);

但连测试都找不到。所以我尝试使用\AspectMock\Test,这至少是找到的。

注意,即使在运行我的测试函数之前,也会抛出错误。当我试着在课堂声明之前运行时

代码语言:javascript
复制
$kernel->init();

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-19 10:57:54

_bootstrap.php文件不再通过协同欺骗自动创建。要启用它们,您必须添加

代码语言:javascript
复制
settings:
    bootstrap: _bootstrap.php

codeception.yml文件,并在测试目录和每个套件中手动创建_bootstrap.php文件。

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

ReflectionFile问题看起来像自动渲染问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46298102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档