繁体   English   中英

Mockito:如何将方法调用作为参数传递

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM