如何使用 Spock 进行深度模拟或存根?

Phi*_*ayo 7 mockito spock

如何在 Spock 中执行 Mockito 的深度模拟/存根 (RETURNS_DEEP_STUBS) 的等效操作?就像是:

Changes changes = Mock()
changes.id(_).current() >> aChangeApi
Run Code Online (Sandbox Code Playgroud)

在 Mockito 时,它会是:

Changes changes = mock(Changes.class, RETURNS_DEEP_STUBS);
when(changes.id(any()).current()).thenReturn(aChangeApi);
Run Code Online (Sandbox Code Playgroud)

Ske*_*epi 6

我认为你可以这样做:

Changes changes = Stub()
changes.id(_) >> Stub(<ReturnedClass>) {
    current() >> aChangeApi
}
Run Code Online (Sandbox Code Playgroud)

这只是返回一个存根,然后可以进一步模拟它。我对 Mockito 不太熟悉,但从谷歌搜索来看,这似乎是应该得到类似结果的方式。