Mam bardziej ogólne pytanie. Którego szkieletu lub implementacji powinienem użyć do wyśmiewania się w Grails 2.x podczas korzystania ze Spocka?Testy Grailsa ze Spockiem - Które szelki dobierają?
Znam ton szyderczy styl: dźwignia Groovy metaClass, Grails mockFor(), Groovy Mock(), Groovy styl zamknięcia, itp. Każdy z nich ma swoje zalety i wady. Ale nie rozumiem, że niektóre styl szyderczy działa w pewnych sytuacjach, których nie mogę określić (tzn. MockFor() działa dla pewnej implementacji, a nie dla innych).
Obecnie mam dwie podobne implementacje szyderstwa metody usługi.
Ten działa:
@TestFor(MyController)
@Mock([MyDevice])
class MyControllerSpec extends ControllerSpec {
void "test st."() {
def myService = mockFor(MyService)
myService.demand.myMethod() { def st ->
return "test"
}
controller.myService = myService.createMock()
}
}
Jednak ta implementacja nie działa:
@TestFor(MyController)
@Mock([MyDevice])
class MyControllerSpec extends ControllerSpec {
void "test st."() {
def yourService = mockFor(YourService)
yourService.demand.yourMethod() { def st ->
return "test"
}
controller.yourService = yourService.createMock()
}
}
Realizacja usług i dzwoni z kontrolerem jest dość podobny. Więc jaka jest najlepsza praktyka kpienia z Grails? A może jest jakaś DOBRA szydercza struktura Grails, która zaoszczędziłaby mi czas na zastanawianie się, jak kpić?
Dzięki za porady! :-)
Mateo
Wypróbowałeś próbny framework Spocka? To naprawdę jasne i proste. Doktorzy spocku mówią, że może on działać albo z mockami spockowymi, albo z Groovy, ale ostrzegam, aby nie próbowali połączyć tych dwóch makrowych frameworków z jakiegoś powodu. –
Tak, to jest właśnie to, co będzie używane, gdy wywołasz mockFor(); Funkcja grails.plugin.spock.UnitSpec.mockFor() jest wywoływana. To, co uznałem za najbardziej użyteczne, to wykorzystanie bezpośrednio programowania metaClass do kpiny, jak i groovy zamknięcia. Jedynym problemem jest to, że metaClass może przeszkadzać w innych testach, gdy nie wyczyścisz go w sekcji zagrożenia. Może Grails 2.3 przyniesie lepsze wsparcie jako Spock będzie domyślnie dla tej wersji ... – kuceram
Jeśli odpowiedź jest właściwa i czy spełnia Twoje oczekiwania, a następnie przyjąć go, aby pomóc innym dowiedzieć się z pytaniem. – dmahapatro