Jaki polecacie framework do rozpoczęcia(zapoznania się) mockowania w testach jednostkowych asp.net mvc?
Dużo zależności.
NSubstitute
A dlaczego akurat on?
W necie jest wiele innych równie polecanych np. moq.
Możesz coś napisać od siebie?
A co z wbudowanym w VS frameworkiem do testowania?
A co z wbudowanym w VS frameworkiem do testowania?
VS AFAIR nie ma wbudowanego frameworka do mockowania (fakt, ma do testów - MSUnit czy jak to się tam zwie, ale to trochę nie do tego służy).
A dlaczego akurat on?
NSubstite jest proste, przejrzyste i przyjemne, np (pisane z palca):
someServiceMock.SomeMethod().Returns(SomeValue);
Zero zbędnych informacji i czyta się to naprawdę fajnie.
Z kolei moq:
someServiceMock.Setup(x => x.SomeMethod()).Returns(someValue);
Tutaj jest trochę więcej rzeczy, jak np. Setup, dziwna lambda. Po prostu (IMO) przyjemniejsze jest NSubstitute.
Ok dzięki ;)
Tzn. MSUNIT + NS... mogę stosować jednoczenie? W VS pisać za pomocą NS...?
Tzn. MSUNIT + NS... mogę stosować jednoczenie?
Tak, one są do 2 różnych rzeczy, nie gryzą się w niczym.
W VS pisać za pomocą NS...?
Jeśli musisz. Dużo bardziej popularne (więc mające więcej narzędzi i generalnie lepsze wsparcie społeczności) są NUnit i xUnit (osobiście wolę xUnit).
Hmm w pracy piszą w wbudowanym z VS. Wydaje się prosty w obsłudze testclass i testmethod i to wszystko ;D Do tego ma jakieś Fake obiekty.
Sprawdzę te co podałeś ;)
NUnit w przeciwieństwie do MSTest pozwala np. na sprawdzenie, czy metoda rzuci wyjątek - bo ma na to asercję, atrybut na poziomie metody testowej może dać fałszywie pozytywny wynik, a na dodatek pozwala na przekazywanie parametrów do metod testowych (TestCase
). No i pozwala na ładniejsze pisanie asercji, przez: Assert.That(actual, Is.EqualTo(expected))
. A dzięki wtyczkom np. tak: actual.Should(Be.EqualTo(expected))
.
Można też podejść do testowania w ogóle inaczej, np. łącząc Fixie i Shoudly.
To przykuwający argument.
Rozumiem, że stosując xUnit do każdego projektu w solucji będę musiał dogrywać framework z nugeta?
Nie do każdego tylko do każdego testowego. (No i technicznie nie musisz przez nugeta, ale tak jest wygodniej.)