繁体   English   中英

单元测试 grails 标签

[英]unit-testing grails tag

我写了一个 Grails 标签,它只是Grails select 标签周围的一个非常薄的包装

package com.example

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

我已经为此 class 编写了单元测试,但是当我运行它时,执行最后一行时出现以下错误:

groovy.lang.MissingMethodException:没有方法签名:com.example.MyTagLib.select() 适用于参数类型:(java.util.LinkedHashMap)

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

有没有办法测试一个调用另一个标签的标签,而不用存根/模拟另一个标签的 output?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM