RSpec

RSpec
Deweloperzy David Chelimsky, Myron Marston, Andy Lindeman, Jon Rowe, Paul Casaretto, Sam Phippen, Bradley Schaefer
Pierwsze wydanie 18 maja 2007 ; 15 lat temu ( 18.05.2007 )
Wersja stabilna
Edit this on Wikidata 3.12.0 / 26 października 2022 ; 4 miesiące temu ( 26 października 2022 )
Magazyn
System operacyjny Międzyplatformowe
Typ programistyczna oparta na zachowaniu / Narzędzie testowe
Licencja Licencja MIT
Strona internetowa rspec .info

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