使用 Grails 2.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() 方法的模型条目变得困难
- 使得对相关模型条目做出多个断言变得困难。
当控制器呈现模板时,有什么方法可以更直接地从测试用例中获取模型中的条目?