Grails2.1.0の使用
コントローラからこれを行うようです:
render(view: "someView", model: [modelEntry: "hello"])
そのコントローラーの単体テストでこれを行うことができます。
controller.method()
assert model.modelEntry == "hello"
ただし、これを行うようにコントローラーを変更すると、次のようになります。
render(template: "someTemplate", model: [modelEntry: "hello"])
これで、テストのモデルインスタンスは空の配列になります。私はこれについてかなりの調査を行いましたが、ほとんどの解決策はGrails 1に対するもののようで、多くの場合、modelAndView
オブジェクト(私のテストには存在しません)またはrenderArgs
(同上)が関係しています。
私が見つけた唯一の解決策は、次のように、テスト内のビューを手動でオーバーライドすることです。
views['_someTemplate.gsp'] = '${modelEntry}'
次に、文字列についてアサーションを作成します。しかし、私はこのソリューションが嫌いです。
- テストがテンプレートのファイル名を知っている必要があります
- 適切なtoString()メソッドを持たないモデルエントリのテストを困難にします
- 関連するモデルエントリについて複数のアサーションを作成することを困難にします。
コントローラがテンプレートをレンダリングするときに、テストケースからモデルのエントリをより直接的に取得する方法はありますか?