Mockito/Spock MissingMethodInvocationException

Mockito/Spock MissingMethodInvocationException

我目前正在尝试在我的单元测试中使用 spock 而不是 junit。 但是我运行遇到了MissingMethodInvocationException的问题。

我在嘲讽Provider<T>.get(),如下图

Provider<SomeOjb> a = Mock()
def setup(){
    SomeOjb obj = new SomeObj();
    Mockito.when(a.get()).thenReturn(obj)
}

但在 运行 之后我得到

org.mockito.exceptions.misusing.MissingMethodInvocationException
when() requires as argument which has to be 'a method call on a mock'

我尝试了两种不同的方法,其中一种是将模拟创建为 def a = Mock(Provider<SomeObj>) 但在这种情况下,我在 运行 之后出现语法错误,问题出在 <>

最后的想法是只使用注释

@Mock
Provider<SomeObj> a;

并像以前一样使用 when/then,在这种情况下它工作正常。 知道为什么第一个想法不正确吗?

显然我很笨。 问题是因为我使用了 Mockito api。不是 spock mock api.

它应该看起来像:

Provider<SomeOjb> a = Mock()
def setup(){
    SomeOjb obj = new SomeObj();
    a.get() >> obj
}