W rspec można utworzyć mock
lub double
. Te dwa wydają się być prawie to samo i nie mogę znaleźć niczego w dokumentacji, która je rozróżnia.W RSpec, jaka jest różnica między próbą i podwójnym?
Jaka jest różnica?
W rspec można utworzyć mock
lub double
. Te dwa wydają się być prawie to samo i nie mogę znaleźć niczego w dokumentacji, która je rozróżnia.W RSpec, jaka jest różnica między próbą i podwójnym?
Jaka jest różnica?
Zarówno mock
, jak i stub
są aliasami bardziej ogólnego double
. Podobnie jak context
i describe
, mogą być używane zamiennie, aby cel specyfikacji był wyraźniejszy. Jest to opisane bardziej szczegółowo w The RSpec Book.
Wydaje się, że po prostu aliases od :__declared_as
wydaje się nie być używane, ale wiadomości.
podwaja
kiedy zależy od składników o właściwościach niedeterministycznych, możemy stwierdzić, że pliki zostaną uszkodzone, dysk nie, sieci limitu czasu, a serwery zejść w środku systemem specyfikacji. ponieważ są to rzeczy, nad którymi nie mamy kontroli, mogą prowadzić do niekonsekwentnych i zaskakujących wyników, gdy uruchamiamy nasze specyfikacje. duble mogą odłączyć nasze przykłady od rzeczywistych implementacji tych zależności.
DodatekKod
, gdy zachowanie systemu oparte jest na sekwencji. kod pośredniczący jest idealny do tego celu. Ponieważ każdy przykład może określać inną sekwencję.example: - W przypadku generatora losowego jest to wyraźnie źródło braku determinacji. chcemy zastąpić rzeczywisty generator losowy stabilną sekwencją.
Mocks
jakiś czas musimy jakąś usługę z innego obiektu, które nie mogą jeszcze istnieć. W takich przypadkach możemy wprowadzić fałszywy obiekt. które możemy zaprogramować, aby zachowywać się jak obiekt, którego obecnie oczekujemy. więc kiedy skupiamy się na interakcji, obiekty próbne sprawiają, że jest to znacznie łatwiejsze do osiągnięcia.
także dokumentacja poleca używać '' mock' double' nad i 'stub': Można również użyć makiety i pośredniczące metod tworzenia podwójnych testów, jednak metody te są nie tylko dla wstecznej kompatybilności i prawdopodobnie będzie przestarzałe, a następnie usunięte z przyszłych wersji (https://www.relishapp.com/rspec/rspec-mocks/) – welldan97
Nowsze wersje programu rspec generują nawet ostrzeżenia takie jak: DEPRECATION: stub jest przestarzałe. Zamiast tego użyj podwójnego. '. – amoebe