Siemka, mam sobie czasem serwisy w aplikacji które ciągną dane o userach, główne dwie to jest ciągnięcie username'a po id, i id po usernamie.
Więc w testach wszędzie jest
when(userRepository.findUsernameById(2)).thenReturn("john doe");
when(userRepository.findUserIdByUsername("john doe")).thenReturn(2);
Wiecie, bo repository wymusza kontrakt. Jest jeden user o id=2
i jeden o username'ie "john doe"
. Wiec to się musi wymusić nawzajem.
Np zrobienie czegoś takiego nie ma sensu:
when(userRepository.findUsernameById(2)).thenReturn("john doe");
when(userRepository.findUserIdByUsername("john doe")).thenReturn(4); // złe id usera, inne niż kontrakt wymusza
I się zastanawiam, czy do testów nie zrobić testowej implementacji user repository, który po prostu brałby te dane z bimapy.
userRepository = new TestUserRepository(singletonMap(2, "john doe"));
Zamiast mockitowych when().thenReturn()
. To byłoby bardziej deklaratywne podejście, plus nie można by tego skopać, co myślicie?