[英]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.