SOAPUI上下文变量-Groovy如何实现这一点?
如果这是一个有点愚蠢的问题的话,我向你们这些优秀的家伙们道歉 在SOAPUI中,我可以创建一个Groovy脚本,在该脚本中,我可以为运行上下文定义一个任意变量,以便以后检索SOAPUI上下文变量-Groovy如何实现这一点?,groovy,soapui,Groovy,Soapui,如果这是一个有点愚蠢的问题的话,我向你们这些优秀的家伙们道歉 在SOAPUI中,我可以创建一个Groovy脚本,在该脚本中,我可以为运行上下文定义一个任意变量,以便以后检索 context.previouslyUndefinedVariable = 3 def num = context.previouslyUndefinedVariable Groovy的什么特性允许将以前未定义的变量添加到这样的对象中?我想了解更多 非常感谢 Groovy能够通过元编程向类动态添加方法 要了解更多信息,请
context.previouslyUndefinedVariable = 3
def num = context.previouslyUndefinedVariable
Groovy的什么特性允许将以前未定义的变量添加到这样的对象中?我想了解更多
非常感谢 Groovy能够通过元编程向类动态添加方法 要了解更多信息,请参阅:
- 对于SoapUI是如何实现的,公认的答案是一个有点糟糕的解释
在本例中,
context
始终是某些SoapUI库java类的实例(例如WsdlTestRunContext
),这些都是Map
的实现。您可以在映射中检查context.getClass()
和断言上下文
在地图上查找属性时,Groovy使用getAt和putAt方法。您可以使用多种语法。所有这些都是等效的:
context.someUndef
context.'someUndef'
context[someUndef]
context['someUndef']
context.getAt('someUndef')
及
我喜欢使用上面任何包含引号的属性,这样GroovyEclipse就不会将其标记为缺少的属性
同样有趣的是,Groovy在检查被称为属性的get
方法之前会先查找getAt()
方法
例如,考虑评估<代码>“FO”。类< /代码>。String实例没有名为class
的属性,也没有方法getAt(String)
,因此下一步它尝试的是查找具有该名称的“get”方法,即找到的getClass()
,我们得到的结果是:String
但是对于映射,['class':'bar'].class
首先引用方法调用getAt('class')
,它将是'bar'
。如果我们想知道它是什么类型的映射,我们必须更加具体并完整地编写:['class':'bar'].getClass()
,它将是LinkedHashMap
我们仍然必须指定getClass()
,即使Map
没有匹配的键,因为['foo':'bar'].class
仍然意味着['foo':'bar'].getAt('class')
,这将是null
context.someUndef = 3
context.'someUndef' = 3
context[someUndef] = 3
context['someUndef'] = 3
context.putAt('someUndef', 3)