бирка Grails модульного тестирования - PullRequest
3 голосов
/ 30 мая 2011

Я написал тег Grails, который представляет собой очень тонкую обертку вокруг тега Grails *

package com.example

class MyTagLib {
  def listTrees = {attrs ->
    List<TreeDto> allTrees = getMandatoryAttributeValue(attrs, 'trees')
    out << g.select(from: allTrees)
  }
}

Я написал модульный тест для этого класса, но когдаЯ запускаю его и получаю следующую ошибку при выполнении последней строки:

groovy.lang.MissingMethodException: Нет сигнатуры метода: com.example.MyTagLib.select () не применимо для типов аргументов: (java.util.LinkedHashMap)

Кажется, что ссылка на теги grails в пространстве имен g недоступна при выполнении модульных тестов.Вместо этого я попытался создать интеграционный тест, но он тоже не работает.

Есть ли способ протестировать тест, который вызывает другой тег, не заглушая / не высмеивая вывод этого другого тега?

1 Ответ

7 голосов
/ 30 мая 2011

Вы должны смоделировать используемую вами библиотеку Grails и внедрить ее с помощью механизма metaClass.

protected void setUp() {
    super.setUp()
    mockTagLib(FormTagLib)
    def g = new FormTagLib()
    tagLib.metaClass.g = g
}
...