私はユニットテストを行ってきましたが、この奇妙な悪い問題に遭遇しました。
一部のサービス/マッパーでユーザー認証テストを行っています。
私は今、全部で約307のテストを実行しています。これは、すべてを1つのバッチで実行した場合にのみ実際に発生します。
1つのZend_Applicationオブジェクトのみをインスタンス化し、それをすべてのテストに使用しようとしています。私はそれをインスタンス化して、db接続、セッション、およびクラスの自動ロードを処理するだけです。
ここに問題があります。
テストのどこかで、Zend_Session_SaveHandler_DbTableの__destructメソッドが呼び出されます。なぜアイデアがないのですか?しかし、そうです。
__destructメソッドは、セッションオブジェクトが読み取り専用としてマークされているため、セッションオブジェクトへの書き込みを役に立たなくします。
destructメソッドが呼び出されている理由がわかりません。
認証テストの前に多くのテストと呼ばれます。テストの各フォルダを個別に実行しても問題はありません。307個すべてのテストを実行しようとしたときだけです。データベースの動作を行うテストがいくつかありますが、コードがdb接続を閉じたり、保存ハンドラーを破棄したりしていません。
なぜこれが起こるのか、そしてなぜ私のZend_Session_SaveHandler_DbTableが破壊されているのかについて誰かが何か考えを持っていますか?これは、デフォルトの存続期間と関係がありますか?