操作
Backport(バックポート) #3980
完了機能テスト実行時にopBrowserによる各リクエスト間でMemberConfigのキャッシュが意図せず引き継がれてしまう
開始日:
2015-11-05
期日:
進捗率:
100%
予定工数:
説明
Overview (現象)¶
MemberConfigTable クラスには MemberConfig をキャッシュするための MemberConfigTable::$results
が用意されおり、多くのコードはこのキャッシュがリクエストごとに初期化される前提で実装されているが、機能テスト時には MemberConfigTable::$results
のキャッシュがリクエストを跨いで引き継がれてしまうため、テスト時のみ発生する意図しない動作の原因となっている。
Causes (原因)¶
MemberConfigTable クラスには MemberConfig をキャッシュするための MemberConfigTable::$results
が用意されているが、通常のブラウザからのアクセスによって OpenPNE が動作する場合はリクエスト毎にこのキャッシュは破棄される。
しかし機能テストで使用する opBrowser では、リクエストごとに sfContext の初期化は行うものの静的変数の初期化は行われないため MemberConfigTable のインスタンス(Doctrine_Core::getTable()
によって生成されるシングルトン)は残ったままとなり、MemberConfigTable::$results
も初期化されない。
Way to fix (修正内容)¶
opBrowser がリクエストを実行する度(sfContext を生成するタイミング)に MemberConfigTable::$results
の中身を空にする
操作