Wpis z mikrobloga

Guglam już ponad godzinę i dalej #!$%@? nie rozumiem różnicy mock vs spy vs stub, w każdym kolejnym wątku na stackoverflow komentarze przeczą tym z poprzedniego wątku i mam wrażenie, że nikt tak naprawdę tego nie rozumie. Jest ktoś w stanie to wyjaśnić? Tak żeby też powiedzieć ładnie przed rekruterem technicznym? Stawiam ciężarówkę rogali.
Używam mockito i junit

#java #naukaprogramowania #programowanie #programista15k #testowanieoprogramowania
  • 14
@takiMirek29: serio? mocki sa troche bardziej madre i wiedza, ze dzialaja w jarzmie testowym, tj. licza ilosc wywolan danej metody, jakie parametry itp. potrafi sam dokonac asercji czy metody zostaly wywolane z odpowiednimi parametrami.
Stub to taki gluptok, ot zwraca jakies zahardkowane wartosci i tyle, prosta implementacja interfejsu, ktora zastepuje inny komponent w jarzmie testowym, ot zapodaje tzw indirect input.
Fake to taka implementacja bardziej pro niz STUB ale nie nadaje
@takiMirek29 generalnie:

spy - coś co możesz sprawdzić jak się zachowalo, np. jakaś metoda przyjmuje closure to możesz zamiast closure przekazać spy i po wykonaniu dowiedzieć się w prosty sposób co do tego spy zostało przekazane

stub - coś co pozwala zastąpić cały moduł jakaś implementacją, np. kod który testujesz zależy od jakiegoś modułu, możesz go "zestubować" i podstawić swoją implementację

mock - podobnie jak stub tylko do obiektów, możesz np. podmienić
@takiMirek29: Generalnie Mockito ma to trochę pokręcone co jest czym. W skrócie to jest tak:
- Spy z Mockito jest w myśl teorii Mockiem,
- Mock z Mockito jest w myśl teorii Stubem.

Mam nadzieję, że z tym będzie łatwiej ( ͡° ͜ʖ ͡°)
@takiMirek29: O mam to pytanie na swojej liście do wykucia przy następnym szukaniu pracy bo też nie ogarniam. AI wygenerowało coś co brzmi sensownie, ale pojęcia nie mam czy poprawne:

In testing, a mock, spy, and stub are all methods used to test the behavior of individual units of code.

A mock is a fake object that imitates the behavior of a real object. Mocks are typically used to mimic the
via Wykop Mobilny (Android)
  • 0
@takiMirek29:
Uczysz się do jakiegoś egzaminu czy jak?
Bo w prawdziwym życiu nikogo to nie obchodzi. Używa się określeń mock/stub zeby określić funkcje której nie testujesz, tylko masz puste albo coś sam zakodziłeś dla nich i tyle.
Jak chcesz mieć jakąś definicje jednoznaczną to musisz się do czegoś konkretnefo odnieść, na przykład mówisz że "według ISTQB mock to jest xxx a stub yyy"
@takiMirek29: rzadko spotykam się z tą nomenklaturą. Jak ktoś mówi, że coś jest "zastubowane" to mam w myśli implementację, która robi "return x", czyli zahardkodowany wynik. Wszystko inne to mock.

Sam "spy" czy tam szpiegowska część mocka jest raczej rzadko wykorzystywany, bo testując wolisz skupić się na wynikach niż na zachowaniu komponentów zależnych