すべてのビューヘルパーの状態をリセットする方法がありますか?たとえば、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 Framework - ビューからビューヘルパーへのアクセス
- 3. php - Zend Frameworkのビューヘルパーの名前が矛盾しています
- 4. Zendのビューヘルパーの質問
- 5. Zend Frameworkアプリケーションからすべてのモジュール、コントローラー、アクションを取得
- 6. zend framework with zend serverを使用する
- 7. ZendのビューヘルパーからZend_Formをロードしますか?
- 8. Zend FrameworkなしのZendツール
- 9. Zend Frameworkを使用したZend Frameworkフォーム
- 10. Zend FrameworkからDBに行くすべてのクエリを検査する方法
- 11. Zend Frameworkのマルチプレイフォーム
- 12. Zend Frameworkの3
- 13. Zend Frameworkの - カスタムデコレーター
- 14. のZend Frameworkクラス
- 15. Zend Frameworkの:
- 16. Zend frameworkのデプロイメント
- 17. VistaのZend Framework
- 18. zend-frameworkのテンプレートシステム
- 19. Zend Frameworkの - リライト
- 20. Zend Frameworkのカスタムルート
- 21. zend frameworkのレイジーローディングコレクション
- 22. Zend Frameworkのフルダイナミックルータ
- 23. Zend Frameworkのパブリックフォルダ
- 24. Zend Frameworkの2、
- 25. Zend Framework:コントローラーのすべてのアクションのレイアウトにデータを追加します。
- 26. Zend FrameworkのFIND_IN_SET()ですか?
- 27. Zend Frameworkのunittestの
- 28. JavascriptがZend FrameworkのDojoをクラッシュする
- 29. zend framework 2のパブリックフォルダを削除する
- 30. Zend Framework:ホームページのルートを作成する
なぜだけではなく、PHPUnitの(私はyoureのZFでのPHPUnitをisng仮定)のセットアップ/ティアダウンメソッドを使用します。
が、これは使用し、すべてのプレースホルダベースのビューヘルパーの状態をリセットするには? – prodigitalsonZend_Registry :: _ unsetInstance();を使用して、ティアダウンメソッドでZend_Registryをクリーンアップすることができます。 – Marcin
@prodigitalson - はい、私たちはPHPUnitを使用していますが、問題はビューヘルパーをクリアするために 'tearDown()'に何を入れるべきか分かりません。 –