Grails渲染模板单元测试问题

时间:2014-01-31 14:24:06

标签: unit-testing templates grails render

我的控制器中有一个动作:

def dirtyMarker() {
    render(template: '/layouts/modals/marker/dirtyMarker')
}

并且我喜欢对它进行单元测试。我一直在尝试很多可能性。这似乎很简单,但似乎没有任何效果(Grails 2.2.3)。我知道在这里,测试可能不重要,但我有很多其他方法返回渲染模板,我不知道如何实现这个测试..

2 个答案:

答案 0 :(得分:4)

在我看来这应该有效:

void dirtyMarker() {
    controller.metaClass.render = { Map params ->
        assert params.template == '/layouts/modals/marker/dirtyMarker'
        return 'a'
    }

    def result = controller.dirtyMarker()

    assert result == 'a'
}

答案 1 :(得分:2)

您还可以模拟模板:

void testDirtyMarker() {
    views['/layouts/modals/marker/_dirtyMarker.gsp'] = 'mock contents'
    controller.dirtyMarker()
    assert response.text == 'mock contents'
}

有关详细信息,请参阅Testing Template Rendering