gpt4 book ai didi

unit-testing - Grails 2.0 单元测试自定义标签库

转载 作者:行者123 更新时间:2023-12-03 21:54:41 25 4
gpt4 key购买 nike

我编写了一个自定义标记库,以便我可以以简单的方式显示对象的属性。它允许我打电话

<g:property label="Name" property="${user.name}"/>

这使我的观点保持简短和一致,并允许我快速进行更改。我的标签库代码如下:
def property = {attrs, body ->
def startingHtml = "..."
def endingHtml = "..."

out << startingHtml
renderField(attrs.property)
out << endingHtml
}

def renderField(property) {
if (property instanceof Collection) {
property.each { out << it + "</br>" }
} else if(property instanceof Address){
renderAddress(property)
} else {
out << property
}
}

def renderAddress(address) {
out << "Address Render Logic Here"
}

我正在尝试围绕此代码添加一些单元测试,因为其中包含逻辑。使用此处找到的示例 ( http://grails.org/doc/latest/guide/testing.html#unitTestingTagLibraries ),我开始添加一些测试。我的标签当前处理的前两个场景是字符串和集合,我能够正确测试(下面的前两个测试)。我需要测试的最后一个场景是一个 Address 对象(它只是一个具有 String 属性的 POGO)。我似乎找不到一种方法来测试将对象作为属性传递到标签库中。
@TestFor(PropertyTagLib)
class PropertyTagLibTests {

@Test
void propertyTagShouldRenderPropertyInsideOfTDWhenPropertyIsAString() {
String result = applyTemplate('<g:property label="something" property="someTextValue"/>').trim()

assert result.contains('someTextValue')
}

@Test
void propertyTagShouldRenderList() {
String result = applyTemplate('g:property label="something" property="[\"one\", \"two\", \"three\"]"/>').trim()

assert result.contains("one</br>two</br>three</br>")
}

@Test
void propertyTagShouldRenderPropertyInsideOfTDWhenPropertyIsAnAddress() {
def address = new Address(line1: "Line 1")
String result = applyTemplate('<g:property label="something" property="${address}"/>').trim()

assert result.contains("Address Render Logic Here")
}
}

当属性之一是对象时,如何测试我的 taglib?

最佳答案

applyTemplate() 的声明如下所示:

String applyTemplate(String contents, Map model = [:])

标签参数通过 model .

您的测试可能如下所示:
@Test
void propertyTagShouldRenderPropertyInsideOfTDWhenPropertyIsAnAddress() {
String result = applyTemplate('<g:property label="something" property="${address}"/>', [address : new Address(line1: "Line 1")]).trim()

assert result.contains("Address Render Logic Here")
}

关于unit-testing - Grails 2.0 单元测试自定义标签库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9071736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com