测试grails使用body中的变量的迭代taglib

时间:2011-04-08 20:54:51

标签: testing grails groovy taglib

我有一个像这样的公平简单的taglib(为了示例,查询被简化):

def toptopics = { attrs, body ->
    def topics = Topic.executeQuery("from Topic")

    topics.each { topic -> 
        out << body(topic:topic)
    }
}

然后我在gsp中使用它如下:

    <g:toptopics>
        <li><a href="#">${topic.name}</a></li> 
    </g:toptopics>

然后我正在尝试为它编写测试(下面的代码):

void setUp() {
    taglib = new MySampleTagLib()
}

void test_each_in_collection() {
    assertEquals("tag 1;tag 2", taglib.toptopics() { "${topic.name};" })
}

但它一直都在失败。测试输出抱怨“没有这样的属性:类的主题:MySampleTagLibTests

出于某种原因,它在将字符串传递给taglib之前尝试评估$ {topic.name}。我试图逃避美元唱歌没有成功。关于这个的任何提示?

1 个答案:

答案 0 :(得分:0)

要测试taglib,您应该扩展TagLibUnitTestCase。当您使用此类时,不直接实例化您的标记类(如上面的代码中所示),而是通过tagLib属性为您提供实例。例如,我们假设我想测试repeat的{​​{1}}标记。此标记采用单个属性,并期望标记具有使用变量的主体。

FooTagLib