Mockito - Rückkehr am selben Objekt übergeben in die Methode
Let ' s vorstellen, ich habe folgende Methode in einigen service-Klasse:
public SomeEntity makeSthWithEntity(someArgs){
SomeEntity entity = new SomeEntity();
/**
* here goes some logic concerning the entity
*/
return repository.merge(entity);
}
Ich würde gerne testen das Verhalten dieser Methode und möchte deswegen zu verspotten, das repository.merge
in der folgenden Weise:
when(repository.merge(any(SomeEntity.class))).thenReturn(objectPassedAsArgument);
Dann verspottet-repository zurück, dass das, was makesSthWithEntity
übergeben und ich kann einfach testen.
Irgendwelche Ideen, wie kann ich erzwingen, mockito zurück objectPassedAsArgument
?
- Sie meinen, wenn Sie(repository.merge(alle(SomeEntity.class))).thenReturn(entity); ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie implementieren eine
Answer
und verwenden Sie dannthenAnswer()
statt.Etwas ähnliches wie:
Natürlich, wenn Sie diese Sie können umgestalten, die Antwort in eine wiederverwendbare Antwort genannt
ReturnFirstArgument
oder ähnliches.AddtionalAnswers.returnsFirstArg()
thenAnswer(i -> i.getArguments()[0])
. Tolle Lösung, und BTW dieAddtionalAnswers.returnsFirstArg()
gibt mir einige Fehler.Oder besser mit mockito ausgeliefert Antworten
Wo
AdditionalAnswers.returnsFirstArg()
könnte statisch importiert.then()
alias hier, wie es liest sich besser.then
alias besser Lesen, wenn verwendet, in Kombination mit der statischen factory-Methode für kundenspezifische Antworten.