Bug(バグ) #3852
完了機能テスト実行時にopBrowserによる各リクエスト間でMemberConfigのキャッシュが意図せず引き継がれてしまう
0%
説明
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
の中身を空にする
Youichi Kimura さんが約9年前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
当チケットに対する Pull Request を送信しました。
https://github.com/openpne/OpenPNE3/pull/264
Chiharu Nakajima さんが8年以上前に更新
- コピー先 Backport(バックポート) #3980: 機能テスト実行時にopBrowserによる各リクエスト間でMemberConfigのキャッシュが意図せず引き継がれてしまう を追加
Chiharu Nakajima さんが8年以上前に更新
- コピー先 Backport(バックポート) #3981: 機能テスト実行時にopBrowserによる各リクエスト間でMemberConfigのキャッシュが意図せず引き継がれてしまう を追加
Shinichi Urabe さんが約8年前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
Youichi Kimura さんがほぼ8年前に更新
このチケットの修正が済んでいないと動作しないテストコードの例を書きました
https://gist.github.com/upsilon/e6bea4d13d5761e942bb5191200ec6ee