すべてのビューヘルパーの状態をリセットする方法がありますか?たとえば、headScript()
で追加されたすべてのスクリプトを削除しますか? 1つのユニットテストで追加されたスクリプトとメタタグは、それぞれのテストで新しいコントローラとビューを作成していても、次のユニットテストで確認されています。これは偽陽性と陰性の原因となります。Zend Frameworkのすべてのビューヘルパーをリセットする
答えて
マルチンさんのコメントは、私たちのテストでは、問題の根本的な原因に私を導きましたこれは、レジストリのスナップショットを取得するコードが実行される前に、プレースホルダレジストリがZendレジストリに追加されていることを示しています。したがって、すべての新しいレジストリオブジェクトを削除するコードが実行されると、もはやプレースホルダレジストリが削除されなくなりました。
$registry = Zend_Registry::getInstance();
unset($registry['Zend_View_Helper_Placeholder_Registry']);
ニース、はるかに良い! – typeoneerror
これは_all_プレースホルダを吹き飛ばします。ちょっと撮りなさい、後で質問する、IMO。 –
@JasonTFeatheringham - それがポイントです。各単体テストは、前に実行したテストの影響を受けることなく、完全に分離して実行する必要があります。 –
これらのコンテナの抽象クラス(Zend_View_Helper_Placeholder_Container_Abstract
)を見てみると、ArrayObjectが続きます。 set
いつでも、配列の値を、設定した値をラップする配列に置き換えます。 append
を実行すると、古い値が取得され、新しい値が配列にシフトされます。だから、理論的には、空白の配列(完全にテストされていない)を渡すことで任意の値をクリアするためにexchangeArrayメソッドを使用することができるだろう:
$this->view->headScript()->exchangeArray(array());
プレースホルダベースのビューヘルパーでこれを行うのは最後の手段でしたが、ポインタのおかげです。それは確かにそのトリックを行うだろう。 –
- 1. Zend Frameworkビューヘルパーでデータを返す
- 2. Zendのビューヘルパーの質問
- 3. Zend Frameworkアプリケーションからすべてのモジュール、コントローラー、アクションを取得
- 4. zend framework with zend serverを使用する
- 5. ZendのビューヘルパーからZend_Formをロードしますか?
- 6. Zend FrameworkからDBに行くすべてのクエリを検査する方法
- 7. Zend Framework:コントローラーのすべてのアクションのレイアウトにデータを追加します。
- 8. Zend FrameworkなしのZendツール
- 9. Zend Frameworkを使用したZend Frameworkフォーム
- 10. Zend Frameworkの - リライト
- 11. zend frameworkのレイジーローディングコレクション
- 12. Zend Frameworkの - カスタムデコレーター
- 13. VistaのZend Framework
- 14. のZend Frameworkクラス
- 15. Zend Frameworkの:
- 16. Zend Frameworkのマルチプレイフォーム
- 17. Zend Frameworkのパブリックフォルダ
- 18. zend-frameworkのテンプレートシステム
- 19. Zend Frameworkのカスタムルート
- 20. Zend Frameworkの2、
- 21. Zend frameworkのデプロイメント
- 22. Zend Frameworkのフルダイナミックルータ
- 23. Zend FrameworkのFIND_IN_SET()ですか?
- 24. Zend Framework:ホームページのルートを作成する
- 25. JavascriptがZend FrameworkのDojoをクラッシュする
- 26. Zend Frameworkのunittestの
- 27. のZend Studioの7.0 + Zend Frameworkの
- 28. Zend Framework - Zendコントローラ/アクションのポップアップフォームにjqueryダイアログを使用する
- 29. Zend FrameworkのDisplayGroupデコレータ
- 30. Zend FrameworkのURLリダイレクト
なぜだけではなく、PHPUnitの(私はyoureのZFでのPHPUnitをisng仮定)のセットアップ/ティアダウンメソッドを使用します。
が、これは使用し、すべてのプレースホルダベースのビューヘルパーの状態をリセットするには? – prodigitalsonZend_Registry :: _ unsetInstance();を使用して、ティアダウンメソッドでZend_Registryをクリーンアップすることができます。 – Marcin
@prodigitalson - はい、私たちはPHPUnitを使用していますが、問題はビューヘルパーをクリアするために 'tearDown()'に何を入れるべきか分かりません。 –