在Mockito中一次使用doNothing()和times()

时间:2018-05-21 02:07:35

标签: java mockito

我想做29次,当30次调用时,请抛出/framework:".NETCoreApp,Version=v2.0"。但我找不到任何设置TIMES属性的地方。 这是我的想象力:

ArithmeticException

但当然@Mock DAOclass dao; @Test(expected = ArithmeticException.class) public void AAA() throws SQLException { doThrow(ArithmeticException.class).when(dao,times(30)).methodABC(); for (int i = 0; i < 30; i++) { dao.nothing(); } } 是无稽之谈,因为我无法在阻塞时添加次数(30)作为第二个参数。 有人知道这个问题的可选解决方案是什么?

顺便说一下。我的目标绝对不是手写30次when(dao,times(30))

1 个答案:

答案 0 :(得分:2)

您可以尝试:

when(someMock.someMethod()).thenAnswer(new Answer() {
    private int count = 0;
    public Object answer(InvocationOnMock invocation) {
        if (count++ == 30){
            ...do something...
        }
        ...do something...
    }
});