[英]Mockito: how to pass method call as a parameter
我想创建一个方法,该方法将生成OngoingStubbing
N 次以迭代地启用存根模拟。 如何传递方法调用,例如: mock.getId()
作为方法的参数?
我使用了下一种方法,但它不起作用,它传递了方法调用的结果
public class MyMock {
private String id;
public MyMock(String id) {
this.id = id;
}
public String getId() {
return this.id;
}
}
...
@Test
public void stubExample() {
MyMock mock = Mockito.mock(MyMock.class);
List<MyMock> mocksList = stubbingMethod(() -> mock.getId());
Assert.assertEquals(3, mocksList.size());
}
private List<MyMock> stubbingMethod(Supplier<String> sup) {
Mockito.when(sup.get()).thenReturn("id1")
.thenReturn("id2")
.thenReturn("id3");
return List.of(
new MyMock(sup.get()),
new MyMock(sup.get()),
new MyMock(sup.get()));
}
并且每次都会抛出 NullPointerException。
谢谢!
我还有一个问题,描述有点模棱两可。 因此,对于迭代存根使用下一个:
public void stub(List<MyMock> mocks, List<String> ids) {
IntStream.range(0, mocks.size()).boxed()
.map(index ->
Mockito.when(mock.getId()).thenReturn(ids.get(index)));
}
例如。 仅在您的模拟和 ID 以相同顺序映射的情况下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.