私のCakePHPアプリケーションにBurzumのCakePHP File Storageプラグインをインストールし、それにAmazon AWS PHP SDKをインストールしました。 (それぞれ、私はPHPUnitの--filterを使用するかどうかにかかわらず、上記の例では、私は1つのテストのみを実行し、それはそれぞれ、すべてのテストに失敗したPHPUnit RuntimeException:Aws S3 S3Clientのインスタンスをシリアル化できません
$ php vendor/bin/phpunit --filter testGenerateWithOnlyUppercase
PHPUnit 5.7.0 by Sebastian Bergmann and contributors.
E 1/1 (100%)
Time: 273 ms, Memory: 26.25MB
There was 1 error:
1) App\Test\TestCase\Auth\DefaultPasswordGeneratorTest::testGenerateWithOnlyUppercase
RuntimeException: Instances of Aws\S3\S3Client cannot be serialized
/var/www/html/MyProject/vendor/aws/aws-sdk-php/src/AwsClient.php:230
ERRORS!
Tests: 1, Assertions: 0, Errors: 1.
:今、すべての私の515回のユニットテストは、次のメッセージで失敗します同じエラーで時間があります)
CakePHPのバージョンは3.4.7、PHPUnitのバージョンは5.7.0です。正直言って、なぜPHPUnitがそれぞれのテストごとにAWS SDKに入っているのか、なぜこのように失敗しているのか分かりません。どんな指針も大変ありがとうございます。
アップデート:私はちょうどAwsClient.php:230
前echo \Cake\Error\Debugger::trace();
入れているNDMの先端に続き
。出力は次のようになります。それはAws\S3\S3Client
のインスタンスはグローバル変数として設定されていることが判明し
Aws\AwsClient::__sleep() - ROOT/vendor/aws/aws-sdk-php/src/AwsClient.php, line 230
serialize - [internal], line ??
SebastianBergmann\GlobalState\Snapshot::snapshotGlobals() - ROOT/vendor/sebastian/global-state/src/Snapshot.php, line 313
SebastianBergmann\GlobalState\Snapshot::__construct() - ROOT/vendor/sebastian/global-state/src/Snapshot.php, line 121
PHPUnit_Framework_TestCase::createGlobalStateSnapshot() - ROOT/vendor/phpunit/phpunit/src/Framework/TestCase.php, line 2488
PHPUnit_Framework_TestCase::snapshotGlobalState() - ROOT/vendor/phpunit/phpunit/src/Framework/TestCase.php, line 2407
PHPUnit_Framework_TestCase::runBare() - ROOT/vendor/phpunit/phpunit/src/Framework/TestCase.php, line 928
PHPUnit_Framework_TestResult::run() - ROOT/vendor/phpunit/phpunit/src/Framework/TestResult.php, line 701
PHPUnit_Framework_TestCase::run() - ROOT/vendor/phpunit/phpunit/src/Framework/TestCase.php, line 909
PHPUnit_Framework_TestSuite::run() - ROOT/vendor/phpunit/phpunit/src/Framework/TestSuite.php, line 728
PHPUnit_Framework_TestSuite::run() - ROOT/vendor/phpunit/phpunit/src/Framework/TestSuite.php, line 728
PHPUnit_Framework_TestSuite::run() - ROOT/vendor/phpunit/phpunit/src/Framework/TestSuite.php, line 728
PHPUnit_TextUI_TestRunner::doRun() - ROOT/vendor/phpunit/phpunit/src/TextUI/TestRunner.php, line 487
PHPUnit_TextUI_Command::run() - ROOT/vendor/phpunit/phpunit/src/TextUI/Command.php, line 188
PHPUnit_TextUI_Command::main() - ROOT/vendor/phpunit/phpunit/src/TextUI/Command.php, line 118
[main] - ROOT/vendor/phpunit/phpunit/phpunit, line 52
エラーが発生した場合は常に、_complete_エラー**、つまり_full_ stacktrace **(問題の場合でも適切に読める形式でログからコピーされることが理想的です)を**投稿してくださいCakePHPに精通している人には明らかかもしれません!理想的には、適切なコンテキストを表示/記述します。つまり、エラーを実際にトリガするコードを表示/強調表示します。 – ndm
ありがとうございます。残念ながらそれ以上のことはありませんが、私はPHPUnitの完全な出力で投稿を編集しました。私はどのコードが実際にエラーを引き起こすのか分かりません。 –
私は以前同様の問題を抱えていたと思いますが、修正したものは覚えていません。しかし、問題はかなり明確です:何か(あなたが把握しなければならない部分)は、直列化できないオブジェクトのインスタンスを直列化しようとしています。私はあなたのテストでは、アダプタを何とか模倣したり、ストレージ関連のメソッドをモックすることをお勧めします。 – burzum