Атрибуты пусты во время модульного теста taglib в Grails - PullRequest
0 голосов
/ 20 марта 2012

Я пытаюсь проверить свой код в 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. Как правильно установить атрибуты?

Ответы [ 2 ]

2 голосов
/ 21 марта 2012

Это будет работать:

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 = [:])

enter image description here

0 голосов
/ 21 марта 2012

Проблема в том, что вы используете одинарные кавычки для текста шаблона? Только GStrings может использовать нотацию $ для вставки переменных. Одинарные кавычки делают его обычной строкой Java, которая не будет подставлять ваше значение.

Попробуйте это:

assert applyTemplate("<s:person person=\"${p}\"/>") == "Joe"
...