gpt4 book ai didi

Java如何从另一个模拟方法调用一个方法

转载 作者:行者123 更新时间:2023-11-30 06:56:31 26 4
gpt4 key购买 nike

是否可以从另一个模拟方法调用某些方法而不是使用 Mockito 或 PowerMock 返回值?

这里有一个例子来说明:

我在生产类中有一个查询:

session.createQuery("update clause")
.setParameter("")
.executeUpdate();
session.flush();

在我的测试课上我是这样模拟的:

Query q = mock(Query.class, "q");
when(session.createQuery("update lalala")).thenReturn(q);
when(q.executeUpdate()).thenReturn(something);

现在我需要调用一个位于我的测试类中的 void 方法来模拟数据库行为,而不是执行 thenReturn(something)

public void doSomething()
{
// do smth
}

所以在我的测试中,当 q.executeUpdate 被调用时,doSomething() 也会被调用。

我用谷歌搜索了任何可能的想法,但似乎无法弄清楚。

最佳答案

您可以使用thenAnswer 函数。查看documentation

when(q.executeUpdate()).thenAnswer( new Answer<Foo>() {
@Override
public Foo answer(InvocationOnMock invocation) throws Throwable {
callYourOtherMethodHere();
return something;
}
} );

关于Java如何从另一个模拟方法调用一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34315123/

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