У меня есть очень простой сервис с методом post
, который обновляет свой прогресс через интерфейс обратного вызова.
public class HttpPostService {
public interface UploadingProgressListener {
void onProgress(int progress);
}
public int post(InputStream body, UploadingProgressListener listener)
{
// shortened for brevity
// read inputstream and writes bytes to HttpURLConnection outputstream
// read inputstream in loop notify listener about progress
listener.onProgress(percentage);
}
}
Я хотел бы протестировать этот класс с помощью Mockito, в основном mock UploadingProgressListener
, а затем проверить, если онбыл вызван n раз с правильными аргументами в процентах.
@Test
public void testPostFileProgressListener() throws IOException {
UploadingProgressListener mockListener = mock(UploadingProgressListener.class);
InputStream inputStream = new ByteArrayInputStream();
service.postFile(inputStream, mockListener);
verify(mockListener, times(5)).onProgress(100);
}
Однако, когда я запускаю тест, он говорит, что он был вызван только один раз, но когда я отлаживаю его, слушатель вызывался 5 раз.
Я знаю, что есть концепция «Ответы» и «АргументКапторы», но я подумал, что, по крайней мере, подсчет того, сколько раз был вызван макет, будет правильным.Спасибо за любую помощь.