偽造瞬態錯誤

想象一下,你正在測試呼叫此介面的程式碼,並且你希望確保重試程式碼正常工作。

public interface DataStore {
    void save(Data data) throws IOException;
}

你可以這樣做:

public void saveChanges_Retries_WhenDataStoreCallFails() {
    DataStore dataStore = new DataStore();
    Data data = new Data();
    doThrow(IOException.class).doNothing().when(dataStore).save(data);

    dataStore.save(data);

    verify(dataStore, times(2)).save(data);
    verifyDataWasSaved();
}