Podczas pisania testów jednostkowych izolujemy się od komponentów z którymi testowany przez nas kod wchodzi w integrację. Poprzez zastąpienie komponentów atrapami jesteśmy w stanie odseparować się od logiki w nich zawartej. Daje nam to możliwość skupienia się na poprawności samej integracji. Sprawdzamy czy testowany przez nas kod wywołuje metodę komponentu z poprawnymi wartościami argumentów oraz jak reaguje on na zwrócone przez tę metodę dane o ile takie istnieją.

Wykorzystując framework Moq w prosty sposób jesteśmy w stanie stworzyć atrapę interesującego nas obiektu. Za pomocą metody Setup, możemy ustalić jakie dane zwróci metoda atrapy lub jak się ona zachowa. Natomiast używając metody Verify sprawdzimy poprawność wartości argumentów przekazywanych do metody podczas interakcji. Moq dostarcza nam wszystkiego co jest nam potrzebne do testowania samej interakcji z komponentem.

Polecanym alternatywnym frameworkiem jest NSubstitute(https://nsubstitute.github.io/).

Instalacja

Zacznijmy od instalacji frameworka.

Do solucji TestingPatterns dodałem nowy projekt o nazwie MoqFeatures.


Rys. 1. Referencje projektu MoqFeatures przed dodaniem frameworka Moq

Zainstalować Moq możemy za pomocą Nuget Package Manager. Uruchamiamy go klikając prawym przyciskiem myszy na projekt MoqFeatures następnie wybieramy z menu kontekstowego opcję Manage NuGet Packages…


Rys. 2. Menu kontekstowe projektu MoqFeatures

Po otwarciu okna wybieramy opcję Browse następnie wpisujemy nazwę interesującego nas narzędzia. Po wyszukaniu dostępnych frameworków wybieramy z listy Moq i klikamy Install.


Rys. 3. Okno NuGet Package Manager dla projektu MoqFeatures

Alternatywnym sposobem instalacji tego narzędzia jest użycie Package Manager Console. Jeżeli nie wiesz jak uruchomić i korzystać z Package Manager Console polecam przeczytać jeden z poprzednich wpisów  http://pisz-kod.pl/2018/06/28/pierwszy-prosty-test/

Wpisujemy dla naszego projektu MoqFeatures następującą komędę:

Install-Package Moq

Po zainstalowaniu frameworka w projekcie powinna pokazać się nowa referencja.


Rys. 4. Referencje projektu po dodaniu interesującego nas frameworka

Zaczęliśmy od instalacji frameworka w następnym wpisie skupimy się na odpowiedzi na ważne pytanie po co stosować Moq.