Pomyśl ogórka jak testowanie całą aplikację, od zewnątrz, gdzie RSpec jest testowanie jednostkowe poszczególnych modułów. Zaczynasz od określenia, jakie zachowania chcesz mieć w swojej aplikacji w Cucumber, a następnie przejdź do RSpec i opisz klasy i moduły, które sprawiają, że to zachowanie działa.
Zajęło mi trochę czasu, aby go zdobyć, ale uważam, że Ogórek jest naprawdę dobry do opisywania w szerokim zakresie tego, jakie funkcje ma aplikacja, a RSpec jest naprawdę dobry w opisywaniu, jak powinien to zrobić.
Powiedziałbyś więc w swoich opowieściach o ogórku, jakiego rodzaju funkcji potrzebujesz i napisz super proste kroki, aby dostarczyć dane wejściowe i spojrzeć na wyjście. Następnie opadasz na RSpec i piszesz specyfikacje, w jaki sposób powinien to zrobić.
Załóżmy, że Twoja funkcja to możliwość wyszukiwania nazw użytkowników na stronie internetowej.można napisać funkcję, ogórek i pierwszy (i tylko pierwszej) scenariusz tak:
Feature: Search users
In order to find people with similar interests as myself
As a user
I want to search for people
Scenario: Search for similar hobbies
Given there is a search page
And there is a list of hobbies
And one of the hobbies is "full contact ironing"
When I select "full contact ironing"
And press search
Then a list of users with the hobby "full contact ironing" are shown
uruchomić ogórek, to powie Ci kroki tracisz, możesz skopiować te i tworzyć proste kroki, aby sprawdzić dla tych rzeczy, ale nie pisz jeszcze żadnego kodu.
Kiedy skończysz definicje kroków, zejdziesz do RSpec i zaczniesz pisać specyfikacje, jak chcesz, aby to działało. (Ogórek oczywiście należy braku)
describe "SearchController" do
it "should respond to searches" do
sc = SearchController.new
sc.should respond_to(:search)
end
end
uruchomić rspec i oglądać to fail następnie zgaśnie i napisać kod:
class SearchController
def search
end
end
to wszystko. Teraz ponownie uruchom test. Powinno minąć, więc zacznij się uszczegóławiać i zacznij opisywać, w jaki sposób będziesz faktycznie korzystać z funkcji wyszukiwania. Nie chciałem zbytnio się w to zagłębiać. Chciałem tylko dać ci wyobrażenie, że opisujesz to, czego chcesz w Cucumber, i opisujesz, jak to powinno działać w RSpec.
Oczywiście możesz zrobić wszystko w Ogórku lub w całym RSpecu, ale naprawdę znalazłem Ogórek pomaga mi powiedzieć w bardzo prosty sposób, co chcę, jeśli spróbuję zrobić to w RSpec, utknąłem w szczegółach. Jeśli najpierw użyję Ogórka, żeby opisać podstawową funkcję, którą chcę i dlaczego mogę wpaść do RSpec i powiedzieć, jak chcę, żeby ta funkcja rzeczywiście działała.
Czasami powtarza się w teście, który nie jest bardzo SUCHY, ale jeśli myślisz o tym jako o poziomie szczegółowości, może to nie przeszkadzać Ci tak bardzo. Na początku robiłem wiele powielania wysiłków, dopóki nie uświadomiłem sobie, że powinienem powiedzieć ogólnie, czego chcę w Cucumber, a następnie powiedzieć dokładnie, czego chcę w RSpec.
To tylko jeden pomysł początkującego, jak korzystać z narzędzi, ale jak na razie wygląda to dobrze. Prawdopodobnie dałem ci straszny przykład, ale próbuję po prostu przybliżyć ogólne szczegóły do szczegółów, które uznałem za przydatne przy używaniu narzędzi.
Całkowicie się zgadzam, to również było moje doświadczenie. –