mockito: WrongTypeOfReturnValue (JAVA)

Habe ich erst vor kurzem angefangen mit Mockito (oder mocking/stubbing für diese Angelegenheit). Ich fange an, die hängen sich auf, wie man mock-Objekte, aber ich bin fest auf dem folgenden code:

public class ConveyorBeltTest {
private Layout layout;
@Mock private WorkStation station1;
@Mock private WorkStation station2;
@Mock private WorkStation station3;
@Mock private CarAssemblyProcess car1;
@Mock private CarAssemblyProcess car2;

@Before
public void setUp() {
    layout = new Layout();
    layout.getWorkStations().add(station1);
    layout.getWorkStations().add(station2);
    layout.getWorkStations().add(station3);
    when(station1.retrievePendingTasks().size()).thenReturn(0);
    when(station2.retrievePendingTasks().size()).thenReturn(2);
    when(station3.retrievePendingTasks().size()).thenReturn(1);
    when(station1.getCar()).thenReturn(car1);
    //it's impossible to have a car in a workstation and to have pending tasks, but it's tested regardless
    when(station2.getCar()).thenReturn(car2);
    when(station3.getCar()).thenReturn(null);
}

Folgende Zeile wirft:

//line causing the problem
when(station1.retrievePendingTasks().size()).thenReturn(0);

//error msg
org.mockito.exceptions.misusing.WrongTypeOfReturnValue: 
Integer cannot be returned by retrievePendingTasks()
retrievePendingTasks() should return Set

Es ist offensichtlich, mir zu sagen, dass es nicht erkennen kann, station1.retrievePendingTasks (), weil station1 ist kein echtes Objekt, sondern ein Schein. Aber ich dachte, wenn ich hatte eine Attrappe, ich könnte die Kette der Befehle hinter der Attrappe, die alle ja egal, solange ich das erwartete Ergebnis in thenReturn(). Kann jemand klären, was ich falsch gemacht habe hier genau?

Habe ich auch schon versucht mit:

doReturn(0).when(station1).retrievePendingTasks().size();

aber das Ergebnis ist das gleiche.

Den workaround den ich gefunden habe, ist um einen neuen Satz aus, füllen Sie es mit gespielter Elemente und übergeben, das Ergebnis retrievePendingTasks() für jede station. Das funktioniert, aber das ist schon ein bisschen extra-code Platz auf dem Bildschirm, wenn mein einziges Ziel ist es, eine Zahl für die Größe des Satzes.

InformationsquelleAutor Babyburger | 2014-05-16
Schreibe einen Kommentar