gpt4 book ai didi

测试 grails 标签库

转载 作者:行者123 更新时间:2023-11-28 19:46:02 24 4
gpt4 key购买 nike

chalice 1.1。我的自定义标签:

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 单元测试

AssertEquals "Some String", taglib.out.toString()

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

MyTagLib 测试

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
}
}

最佳答案

通过 TagLibUnitTestCase,您可以使用 renderArgs 来测试对渲染方法的调用,就像在 ControllerUnitTestCase 中一样。 renderArgs 属性只是一个映射,用于存储对 render 动态方法的最后一次调用的参数。所以,在你的例子中你会想要这样的东西:

assertEquals "/templates/textField", renderArgs.template
assertFalse renderArgs.model.required

等等。

关于测试 grails 标签库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/981814/

24 4 0