2017-09-19 8 views
1

私はコードテストでaspect mockを使用しようとしています。アスペクトモック 'Go ParserReflection ReflectionFile'が見つかりません

ドキュメントから、設定方法が明確ではありません。

https://github.com/Codeception/AspectMock

テスト/ _bootstrap.phpにAspectMock \カーネルを含めます。

私はそのようなファイルを持っていません。私はそれを作成する必要がありますか?私はどこにそれを含めるべきですか?

私のディレクトリ構造は以下の通りです:

test/codeception/acceptance。

私は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', 
]); 

私は本当にベンダーのディレクトリを除外しなければならないのか分からないが、私は、そのような見提案。それが必須であれば、おそらく私が見ていないreadmeで書かれているはずです。

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 

を取得しますか?

また、私はREADMEに

$userModel = test::double('UserModel', ['tableName' => 'my_users']); 

を見ましたが、テストはしても見つかりません。だから私は少なくとも\ AspectMock \ Testを使用しようとしましたが、これは少なくとも見つかりました。

私のテスト機能を実行する前でもエラーがスローされていることに注意してください。クラス宣言の前に実行しようとしたとき

$kernel->init(); 

すでに同じエラーが表示されます。

答えて

1

_bootstrap.phpファイルがCodeceptionによって自動的に作成されなくなりました。 は、ファイル をcodeception.ymlし、手動テストのディレクトリとすべてのスイート内のファイルを作成するために_bootstrap.php

settings: 
    bootstrap: _bootstrap.php 

を追加する必要があり、それらを有効にするには。

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

ReflectionFileの問題は、オートローディングの問題のように見えます。

+0

は役に立ちましたか? – Naktibalda

関連する問題