如何为void方法执行OngoingStubbing?

时间:2014-08-22 12:44:57

标签: java testing mockito powermock stubbing

我试图编写一个单元测试,在成功之前抛出异常一定次数。它可以用于方法,不返回void:

    OngoingStubbing<Result> requestCallStub = when(request.call());

    for(int i = 0; i < numFailures; i++){
        requestCallStub = requestCallStub.thenThrow(
                new Exception("Failing for test reasons, round " + i));
    }

但是,只有当call()方法是非void方法时,这才是可行的。我想知道是否有一种方法可以使用相同的模式进行void方法?

1 个答案:

答案 0 :(得分:0)

我能够使用以下代码解决这个问题:

    Stubber deleteStubber = null;
    if (numOfFailures > 0) {
        deleteStubber = PowerMockito.doThrow(new NullPointerException("Testing"));
        for (int i = 1; i < numOfFailures; i++) {
            deleteStubber = deleteStubber.doThrow(new NullPointerException("Testing"));
        }
    }
    deleteStubber.doNothing().when(request).call();

希望它也有助于其他人。