【发布时间】:2014-06-25 07:58:32
【问题描述】:
我在 Grails 中的自定义 Taglib 中有一个简单的标签,如下所示:
def Bar = {attrs, body ->
Bar bar = Bar.get(attrs.id)
out << render(template: '/bar', plugin: 'web-core', model: bar)
}
我需要运行单元测试...
但我想使用模拟渲染 - RenderTagLib 或 GroovyPagesTemplateRenederer 来检查正确的模型,并给出模板的名称而不是使用
when:
String string = applyTemplate <foo:bar id="1" />
then:
string.contains('Bar 1')
例如:我曾尝试像这样模拟 GroovyPagesTemplateRenderer:
设置:
def mock = Mock (GroovyPagesTemplateRenderer) {
render(_,_,_,_,_) >> //something
}
但是 render 和 makeTemplate 一样是 void 方法,所以我不知道该怎么做?
或者对 Taglib 进行单元测试的最佳方法是什么?
如果我改变 Taglib 的视图,输出可能会有所不同。所以我将不得不更改两个单元测试(视图,tagLib)。
这就是为什么我需要单独测试 Taglib 类以及查看。
感谢您的回答...
【问题讨论】:
标签: unit-testing grails taglib spock