2011-03-08 7 views
3

私は、DynamicGuys doctrine2をzendフレームワーク(https://github.com/dynamicguy/zf1doctrine2)に統合して使用しています。それは動作しますが、私はPHPUnitでテストを行いたい場合、私はこのエラーを取得 : PDOExeption:あなたはシリアル化できませんまたはアンシリアライズPDOインスタンスZF + Doctrine2 phpUnitエラー:PDOExeption:PDOインスタンスをシリアル化またはシリアル化解除できません

私は少し検索した、と私はライン44をコメントアウトかのことが判明しました https://github.com/dynamicguy/zf1doctrine2/blob/master/library/ZendX/Doctrine2/Application/Resource/Entitymanagerfactory.php phpUnitは動作しますが、エンティティマネージャは返されませんので、残りのアプリケーションは動作しません。

エラーの原因は何ですか?

答えて

4

これは、各テストの間にグローバル変数と静的属性をバックアップするPHPUnitと関係があります。 PDOインスタンスがある場合、シリアル化しようとすると分解されます。同様の問題が発生したため、PDOインスタンスがグローバルパラメータとして格納されていた場所を見つけることができませんでしたが、必要なテストでbackupGlobalsとbackupStaticAttributesを無効にしてくれました。

/** 
* Search test. 
* 
* @backupGlobals disabled 
* @backupStaticAttributes disabled 
* 
* @author Steven Rosato 
*/ 
class SearchControllerTest extends \Majisti\Test\TestCase 
{ 
    ... 
} 

ソース:http://sebastian-bergmann.de/archives/797-Global-Variables-and-PHPUnit.html

+0

だからこれを無効にし、どのような方法でテストに影響を与えるdoesntの? – Danielss89

+0

私が提供したソースによると、他のテストに影響するグローバルがある場合、それに依存するテストを行うグローバルがない場合はうまく動作するはずです。 –

+0

これは実際に各テストファイルでこれを行う必要があります:( – Danielss89

関連する問題