gpt4 book ai didi

java - 如何使用 Mockito 获得一个空的 Stubbing 以进行编程 stub

转载 作者:行者123 更新时间:2023-11-30 08:31:55 25 4
gpt4 key购买 nike

通常使用 Mockito,如果你 stub 一个被多次调用的方法,你会这样做

Mockito
.doReturn(0)
.doReturn(1)
.doReturn(2)
.when(mock).getValue();

我想以编程方式 stub 一个被多次调用的方法,比如

Stubber stubber;
for (int i = 0; i < 8; ++i) {
stubber.doReturn(i);
}
stubber.when(mock).getValue();

我的问题是似乎没有public Stubber 工厂方法。有 org.mockito.internal.MockitoCore.stubber()new org.mockito.internal.stubbing.StubberImpl(),但两者都是内部的,使用它们感觉不对.

有没有更好的模式可以像这样以编程方式 stub ?有没有更好的方法来获取一个空的 Stubber

一个解决方案是 when().thenReturn(),但自从阅读 the difference between doReturn() and then() 后我一直在避免这种情况。 .

最佳答案

获得 Stubber 的唯一官方方法是调用 doReturndoAnswer(等等)。

更好的 stub 模式是使用 returnsElementsOf :

List<Integer> returnValues = new ArrayList<>();
for (int i = 0; i < 8; ++i) {
returnValues.add(i);
}
doAnswer(returnsElementsOf(returnValues)).when(mock).getValue();

您还可以将数组传递给 doReturn,它已经采用了数组兼容的可变参数,但仅作为其双参数重载:

int[] returnValues = new int[7];
for (int i = 1; i < 8; ++i) {
returnValues[i] = i;
}
doReturn(0, returnValues).when(mock).getValue();

关于java - 如何使用 Mockito 获得一个空的 Stubbing 以进行编程 stub ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40412688/

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