我编写了一个Groovy扩展库,它为List类添加了额外的方法。我试图用Spock编写测试,但我无法让我的一些测试工作。
代码
public static def tailIfAny(List list) {
println "tailIfAny() list.size(): ${list.size()}"
def r = list.size() ? list.tail() : null
println "r: $r"
return r
}
def "tailIfAny() calls tail()"() {
setup:
def list = Spy(ArrayList)
list << 'a'
list << 'b'
when:
println "list ${list} -- ${list.size()}"
println "Before tailIfAny()"
list.tailIfAny()
println "After tailIfAny()"
then:
1 * list.tail()
}
Too few invocations for: 1 * list.tail() (0 invocations) Unmatched invocations (ordered by similarity): 1 * list.toArray() 1 * list.iterator() 3 * list.size() 1 * list.isEmpty() at org.spockframework.mock.runtime.InteractionScope.verifyInteractions(InteractionScope.java:78) at org.spockframework.mock.runtime.MockController.leaveScope(MockController.java:76) at com.fgi.extensions.ListExtensionsTests.add element in setup(ListExtensionsTests.groovy:65)
list [a, b] -- 2 Before tailIfAny() tailIfAny() list.size(): 2 r: [b] // This tells me that tail() is being called. After tailIfAny()
有人能解释一下为什么Spock认为tail()
没有被调用吗?还是我错过了什么?
谢了。
从技术上讲,tail()
不会在list对象上调用(ArrayList
没有声明这样的方法)。因此,基于代理的spy()
没有机会截获调用。尝试使用groovyspy()
。
本文向大家介绍groovy 调用方法,包括了groovy 调用方法的使用技巧和注意事项,需要的朋友参考一下 示例 请注意,如果在某些元素上不存在该方法,则在集合中混合类型时,groovy.lang.MissingMethodException可能会引发a:
我试图理解当我遇到诸如“groovy.lang.MissingMethodException:无方法签名:Three.method()适用于参数类型”之类的错误时会发生什么:
我已经使用Groovy几年了,但不是在最近几个月,所以这可能只是一个新手问题。我试图解析日志文件,但当我尝试这样做时: 我得到了这个例外: 线程“main”groovy.lang.missingmethodException中的异常:方法:java.text.SimpleDateFormat.parse()的签名不适用于参数类型:(java.lang.string,ce.readscript.tm
解决方案是什么?只有4-5行代码隐藏并重新启动,然后完全成功运行,引导文件大小为149k。当我注释或删除4-5行代码时,它将无误运行!
我是groovy的新手。我有这样的代码。 串味 从这个客户端映射中,我需要迭代appName和enable的值。为此,我使用了get方法。。。我对此不确定。 使用此get方法时,我遇到以下错误。因为我是groovy新手,所以我不知道这里发生了什么 棒极了。lang.MissingMethodException:没有方法com的签名。康卡斯特。csv。哈克索。SecureFirebaseRestCl