首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试grails taglib

测试grails taglib
EN

Stack Overflow用户
提问于 2009-06-11 15:28:57
回答 1查看 4.2K关注 0票数 7

Grails 1.1。我的自定义标签:

代码语言:javascript
复制
class MyTagLib {
  static namespace 'ct'
  def textField = {attrs ->
    def bean = attrs.remove('bean')
    def field = attrs.remove('field')
    attrs.name = field
    out << render(template:"/templates/textField", model:[
        required: !bean.constraints[field].nullable,
        display : bean["${bean.trainingExperience.type}"][field],
        theTag : g.textField(name : field, value : bean[field]),
        value : bean[field]
    ])
}

我看到的所有taglib单元测试都是

代码语言:javascript
复制
AssertEquals "Some String", taglib.out.toString()

是否可以测试正确的模板是否使用模型中的正确值呈现?

MyTagLibTests

代码语言:javascript
复制
public class CareertracTagLibTests extends TagLibUnitTestCase{
  protected void setUp() {
    super.setUp()
    mockTagLib(FormTagLib)
    mockTagLib(RenderTagLib) 
    def g = new FormTagLib() // interpret "g" namespace as instances of FormTagLib
    tagLib.metaClass.g = g
    String.metaClass.encodeAsHTML = {org.codehaus.groovy.grails.plugins.codecs.HTMLCodec.encode(it)}
  }
  void TestTextField() {
    tagLib.textField([bean : mockBean, field : 'viewField'])
    def x = new RenderTagLib().render(template:"/templates/textField", 
      model:[required:false, 
              display:"view",
              // Snip 
            ])
    assertEquals tagLib.out, x.out // Or something like this
  }
} 

}

EN

回答 1

Stack Overflow用户

发布于 2011-02-04 16:30:06

TagLibUnitTestCase中,您可以使用renderArgs测试对render方法的调用,方法与在ControllerUnitTestCase中相同。renderArgs属性只是存储最后一次调用render动态方法的参数的映射。因此,在您的示例中,您可能希望如下所示:

代码语言:javascript
复制
assertEquals "/templates/textField", renderArgs.template
assertFalse renderArgs.model.required

诸若此类。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/981814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档