RSpec
Deweloperzy | David Chelimsky, Myron Marston, Andy Lindeman, Jon Rowe, Paul Casaretto, Sam Phippen, Bradley Schaefer |
---|---|
Pierwsze wydanie | 18 maja 2007 |
Wersja stabilna | |
Magazyn | |
System operacyjny | Międzyplatformowe |
Typ | programistyczna oparta na zachowaniu / Narzędzie testowe |
Licencja | Licencja MIT |
Strona internetowa |
RSpec to narzędzie do testowania języka specyficznego dla domeny komputera (DSL) (konkretna domena aplikacji) napisane w języku programowania Ruby do testowania kodu Ruby. Jest to środowisko programowania opartego na zachowaniu (BDD) , które jest szeroko stosowane w aplikacjach produkcyjnych. Podstawową ideą tej koncepcji jest programowanie sterowane testami (TDD), w którym testy są najpierw pisane, a programowanie opiera się na napisaniu wystarczającej ilości kodu, który spełni te testy, a następnie refaktoryzację . Zawiera własny kpiący framework , który jest w pełni zintegrowany z frameworkiem opartym na JMock . Prostota składni RSpec sprawia, że jest to jedno z popularnych narzędzi do testowania aplikacji Ruby. Narzędzia RSpec można użyć, instalując klejnot rspec
, który składa się z trzech innych klejnotów, a mianowicie rspec-core
, rspec-expectation
i rspec-mock.
Historia
RSpec został uruchomiony jako eksperyment przez Stevena Bakera w 2005 roku wraz z członkami jego zespołu Dave Astels, Aslak Hellesøy i David Chelimsky. Chelimsky był odpowiedzialny za rozwój RSpec-Rails, który ułatwił integrację z Ruby on Rails. Pierwsze wydanie, tj. RSpec 1.0, ukazało się w maju 2007 roku i zawierało wiele głównych funkcji RSpec, które są również uwzględniane w najnowszych wydaniach. Jednak ze względu na pewne problemy techniczne, takie jak szybkość testowania, został później przerwany. Trzecia wersja RSpec, tj. RSpec 3, została wydana w lipcu 2014 r. i zawierała wiele nowych funkcji, takich jak weryfikowanie dublerów, komponowalne dopasowywanie i wiele innych.
Stosowanie
Opisywanie zachowania obiektów
Jak wspomniano powyżej, RSpec zapewnia specyficzny dla domeny język do opisywania zachowania obiektów . Słowa kluczowe używane w RSpec są podobne do słów używanych w innych językach i/lub frameworkach TDD. Na przykład, jeśli weźmie się pod uwagę słowa kluczowe użyte w Test::Unit, można je odwzorować na słowa kluczowe RSpec w następujący sposób:
- Stwierdzenie staje się oczekiwaniem
- Metoda testowa staje się Przykładowym kodem
- Przypadek testowy staje się grupą Przykład
Istnieje wiele takich słów kluczowych, które są używane w tym samym kontekście, ale mają podobne nazwy. Składnia RSpec zapewnia łatwość czytelności i opisuje zachowanie kodu, zapewniając w ten sposób swobodę programiście. Każda platforma testowa działa w następujący sposób - biorąc pod uwagę pewien kontekst, kiedy wystąpi jakieś zdarzenie, jaki wynik jest oczekiwany. Metody takie jak opis() , context() i it() tworzą odpowiednio analogię i szkielet kodu testowego.
opisać()
opisz () służy do opisu klasy, metody lub przykładowej grupy. Jest to zewnętrzny blok, który faktycznie zawiera kod testowy i przedstawia charakterystykę zawartego w nim kodu. Ta metoda przyjmuje pewną liczbę argumentów i opcjonalny blok. Jednak zwykle do opisania zachowania przykładowej grupy używa się jednego lub dwóch argumentów. Pierwszy argument reprezentuje odwołanie do klasy lub modułu, podczas gdy drugi argument jest opcjonalny, a jego typem danych będzie String . Przykładowe grupy mogą być również zagnieżdżane. Przykład użycia metody opisowej jest następujący:
opisz Użytkownika " bez salda konta" { .... } = > Użytkownik bez salda konta
kontekst()
Blok context() służy do opisywania kontekstu, w którym używana jest klasa lub metoda wymieniona w bloku opisu. W tym scenariuszu można to uznać za alias słowa opisującego() i oba mogą być używane zamiennie. Ogólnie rzecz biorąc, opis () jest używany do rzeczy, a context() jest używany do kontekstów. Pomaga zaryzykować różne wyniki w różnych scenariuszach. Powyższy przykład można opisać za pomocą context() w następujący sposób:
opisz Użytkownik do kontekstu „nie ma salda konta” do … koniec koniec
Korzystanie z context() ułatwia skanowanie pliku specyfikacji i wyjaśnia, do czego się odnosi.
To()
Jest to metoda RSpec, która opisuje specyfikacje próbki w kontekście. Blok it() przyjmuje ciąg znaków jako argument, a ciąg znaków występujący po słowie kluczowym „it” może być traktowany jako funkcja, którą blok ma wykonać, czyli innymi słowy, może być traktowany jako przypadek testowy. Rozważ następujący przykład:
opisz Użytkownik do kontekst „nie ma salda na koncie” do tego „nie może udzielić kredytu mieszkaniowego” do umieszcza „Pożyczka nie może zostać udzielona z powodu braku salda na rachunku”. koniec koniec koniec
RSpec::Oczekiwania
W RSpec oczekiwanie jest instrukcją wyrażającą oczekiwany stan czegoś w określonym momencie wykonywania przykładowego kodu. RSpec używa prostej struktury i słów kluczowych, takich jak should() i should_not() , aby wyrazić oczekiwania. Obsługuje elementy dopasowujące, czyli obiekty, które próbują dopasować oczekiwany wynik, zarówno dla typowych operacji, jak i nietypowych wyrażeń. Na przykład, jeśli oczekiwanym wynikiem wyniku jest, powiedzmy, wartość liczbowa 5, oczekiwanie RSpec, które wykorzystuje dopasowanie równe dla tego samego, byłoby zapisane w następujący sposób:
wynik.powinien być równy(5)
RSpec::Mocks
RSpec udostępnia bibliotekę o nazwie RSpec::Mocks w celu tworzenia podwójnych testów , które ułatwiają skupienie się na rolach, odkrywanie interfejsów , ale przede wszystkim robienie postępów bez zaimplementowanych zależności , zapewniając w ten sposób izolację od sprzężeń i braku determinizmu .
Narzędzia i integracja
Istnieje wiele narzędzi obsługujących RSpec, takich jak:
RSpec zapewnia również szereg narzędzi i punktów rozszerzeń do obsługi rozszerzania RSpec w celu spełnienia potrzeb specyficznych dla domeny. Na przykład używanie metadanych powiązanych z grupami i przykładami do celów raportowania, używanie globalnej konfiguracji do przypisywania bloków przed i po do każdej przykładowej grupy, używanie makr itp.
Inne narzędzia do testowania języka Ruby
Dalsza lektura
1. Pierwsze kroki z RSpec: (kroki instalacji) http://rspec.info/
2. Beck, K. (2014). Programowanie sterowane testami na przykładzie . Boston: Addison-Wesley.
Linki zewnętrzne
- Oficjalna strona internetowa
- RSpec-2
- Poza programowaniem opartym na testach — programowanie oparte na zachowaniu. Google TechTalk autorstwa Dave'a Astelsa na BDD przy użyciu RSpec.
- dotyczący najlepszych praktyk RSpec autorstwa Jareda Carrolla, pobrany 24 kwietnia 2011 r.
- Testy behawioralne z artykułem RSpec autorstwa Bruce'a Tate'a, pobrane 21 lipca 2011 r.