【问题标题】:unit-testing grails tag单元测试 grails 标签
【发布时间】:2011-05-30 13:30:55
【问题描述】:

我编写了一个 Grails 标签,它只是 Grails select tag 的一个非常薄的包装器

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)

运行单元测试时,g 命名空间中的 grails 标签的引用似乎不可用。我已经尝试创建一个集成测试,但这也不起作用。

有没有一种方法可以测试一个调用另一个标签而不存根/模拟另一个标签的输出的标签?

【问题讨论】:

    标签: unit-testing grails groovy tags taglib


    【解决方案1】:

    你必须模拟你正在使用的 grails taglib 并通过 metaClass 机制注入它。

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 2016-08-23
    相关资源
    最近更新 更多