2011-09-09 8 views

Odpowiedz

37

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.

+4

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

+1

Nowsze wersje programu rspec generują nawet ostrzeżenia takie jak: DEPRECATION: stub jest przestarzałe. Zamiast tego użyj podwójnego. '. – amoebe

2

Wydaje się, że po prostu aliases od :__declared_as wydaje się nie być używane, ale wiadomości.

1

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.

Dodatek

Kod

, 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.

Powiązane problemy