gpt4 book ai didi

groovy - 使用重载方法模拟任何不适用于 doAnswer 的匹配器

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

我正在尝试从具有 2 个重载的 gradle 类中 stub 一个 void 方法,并且 mockito 匹配器与 wearg 方法匹配,而我的 stub 失败了。这是我到目前为止所拥有的:

doAnswer(new Answer<Void>() {
@Override
Void answer(final InvocationOnMock invocation) throws Throwable {
Closure clo = invocation.arguments[0] as Closure
clo.run()
return null
}
}).when(mProject).afterEvaluate(any(Closure.class))

但是当我调试调用以查看匹配器时,它正在寻找方法 public abstract void org.gradle.api.Project.afterEvaluate(org.gradle.api.Action)而不是 public abstract void org.gradle.api.Project.afterEvaluate(groovy.lang.Closure)
只是提到这是 groovy 而不是 Java,我不确定这是否与它有关。

我检查了 any(Closure.class) 是什么意思matcher 确实广告它只是返回一个空值。假设 Actor 应该调用正确的方法,但由于某种原因它没有使用正确的方法注册。

也接受任何解决方法。

谢谢。

最佳答案

好的,我发现了另一个问题 Unexpected behavior with overloaded methods

显然是 groovy 的错,因为我必须将 null 转换为正确的类型,即使 any(Closure.class)方法已经返回正确的类型。像这样:

doAnswer(new Answer<Void>() {
@Override
Void answer(final InvocationOnMock invocation) throws Throwable {
Closure clo = invocation.arguments[0] as Closure
clo.run()
return null
}
}).when(mProject).afterEvaluate(any(Closure.class) as Closure)

关于groovy - 使用重载方法模拟任何不适用于 doAnswer 的匹配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25857019/

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