Mam zagwozdkę podczas testowania prezentera. W pierwszym teście sprawdzam po prostu czy wywołanie metody prezentera wywołuje odpowiednią metodę w DAO i wyświetla listę na widoku, coś w stylu:
@Test
public void loadTasks_showInView() {
presenter.loadTasks();
verify(taskDAO).getTasks(loadTasksCallbackCaptor.capture());
loadTasksCallbackCaptor.getValue().onTasksLoaded(TASKS); // TASKS to jakaś statyczna array lista
ArgumentCaptor<List> showTasksArgumentCaptor = ArgumentCaptor.forClass(List.class);
verify(view).showTasks(showTasksArgumentCaptor.capture());
assertTrue(showTasksArgumentCaptor.getValue().size() == 3);
}
Kolejnym testem jaki chce napisać jest sprawdzenie dodania nowego tasku - w sensie, jeśli dodam task, którego nazwa już jest na wczytanej liście ma pojawić się info, że taki już jest, a jeśli go nie ma to go po prostu dodaje. I teoretycznie mógłbym to zrobić w tym teście wyżej: wywołać na końcu coś w stylu(gdzie ta statyczna lista TASKS zawierałaby już taki):
presenter.saveTask(new Task("task_name");
verify(view).showTaskExistInfo();
i potem jeszcze drugi przypadek dopisać
presenter.saveTask(new Task("new_task_name");
verify(view).showNewTaskInfo();
Ale nie wiem czy nie lepiej to rozbić na 2 dodatkowe testy ? Tylko jak wtedy przekażę ten statyczny array list TASKS do tego prezentera ? Bo w 1 metodzie robię to za pomocą captora w metodze verify, ale wydaje i się głupim 2x weryfikować to samo. Widziałem rozwiązanie za pomocą obiektu Answer ale mimo wszystko ten captor wydaje się prostszy .. jak się to POWINNO robić ?