gpt4 book ai didi

java - 我可以在第一个方法的 then 语句中模拟另一个方法吗?

转载 作者:行者123 更新时间:2023-11-30 02:49:59 24 4
gpt4 key购买 nike

我可以在模拟方法的 then 语句中模拟另一个方法吗?

我正在 mock 2 个不同参数的 ResultSet.getByte()

when(rs.getByte("present")).thenReturn(5)
when(rs.getByte("missing")).thenReturn(0)

我还想要的是,模拟 getByte 不仅返回值,还模拟 ResultSet.wasNull 首先返回一次 false case 和 true 在另一个中。

这是我运行场景的方式

val rs: WrappedResultSet = ...
val res3: Option[Byte] = rs.byteOpt("present")
val res4: Option[Byte] = rs.byteOpt("missing")
res3.isDefined should be(true)
res4.isDefined should be(false)

byteOptgetter 的实现在 getByte 之后立即内部调用 wasNull

最佳答案

也许做类似的事情:

final ResultSet rs = mock(ResultSet.class);
when(rs.getByte(anyString())).thenAnswer(new Answer<Long>() {
@Override
public Long answer(InvocationOnMock invocationOnMock) throws Throwable {
String argument = (String) invocationOnMock.getArguments()[0];
Long answer;
if("present".equals(argument)){
when(rs.wasNull()).thenReturn(false); //mock to return false, when present was argument
answer = 5L;
else {
when(rs.wasNull()).thenReturn(true); //mock to return true, when something else was sent to method
answer = 0L;
}
return answer;
}
}

关于java - 我可以在第一个方法的 then 语句中模拟另一个方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39036202/

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