我正在尝试在taglib(grails 2.0.1)中测试我的代码:
class ATagLib {
static namespace = "s"
def person = {attrs, body -> out << attrs.person;}
}
@TestFor(ATagLib)
class ATagLibTests {
@Test
void test() {
String p = 'Joe'
// None of these work for me.
assert applyTemplate('<s:person person="${p}"/>') == 'Joe'
assert applyTemplate('<s:person/>', [person:p]) == 'Joe'
}
}
测试总是失败,因为attrs.person为null。如何正确设置属性?
答案 0 :(得分:2)
这将有效:
String p = 'Joe'
assert applyTemplate('<s:person person="${person}"/>', [person:p]) == 'Joe'
assertOutputEquals('Joe is cool !', '<s:person person="${person}"/>', [person:p], { it.toString() + " is cool !" } )
它调用applyTemplate的第一个签名,即:
String applyTemplate(String contents, Map model = [:])
答案 1 :(得分:0)
问题是你使用单引号作为模板文字吗?只有GStrings可以使用$表示法来插入变量。单引号使其成为常规Java字符串,不会替换您的值。
试试这个:
assert applyTemplate("<s:person person=\"${p}\"/>") == "Joe"