类似于 Mockito 给 Spock 的答案?

amo*_*fis 1 unit-testing mocking mockito spock

在 Mockito 中,有一个很好的方法可以通过与模拟的交互来获得编程答案。例如,我们可以对模拟进行编程以返回传递给其方法调用的参数:

when(mockDao.persist(any(Entity.class)).thenAnswer(new Answer<Entity>() {

    public Entity answer(InvocationOnMock invocationOnMock) throws Throwable {
        Entity entity = (Entity) invocationOnMock.getArguments()[0];

        return entity;
    }
});
Run Code Online (Sandbox Code Playgroud)

有没有办法在 Spock 中做同样的事情?

Pet*_*ser 5

mockDao.persist(_) >> { it[0] }
Run Code Online (Sandbox Code Playgroud)

或者,通过解构:

mockDao.persist(_) >> { Entity entity -> entity }
Run Code Online (Sandbox Code Playgroud)