Świat JavaScript oferuje mnóstwo opcji dla … cóż, całkiem sporo. Dziś skupimy się na narzędziach testujących, odpowiadając na pytanie „Jaki jest najlepszy framework JavaScript?”
Przeprowadzimy Cię przez pięć najpopularniejszych frameworków testujących JavaScript i pod koniec artykułu wybierzemy ten, który naszym zdaniem jest najlepszy. Zaczynajmy.
Czym są frameworki testujące?
Zanim zanurkujemy w naszą listę frameworków, ważne jest aby zrozumieć czym są frameworki testujące.
Po prostu, framework testujący jest narzędziem lub zestawem narzędzi, które pomagają w przeprowadzaniu testów jednostkowych. Szkielet testowy powinien dostarczyć ci co najmniej
- Reguły lub konwencje do pisania przypadków testowych i organizowania ich w zestawy testowe.
- Środki do automatycznego wykonywania i samodzielnego oceniania testów.
- Wyniki testów, które są wyświetlane i formatowane.
Five JavaScript Testing Frameworks Worth Checking Out
Do tej pory powinieneś mieć solidny chwyt na temat tego czym są frameworki testowe i dlaczego ich potrzebujemy. Mając to z głowy, czas zająć się naszą listą narzędzi, zaczynając od Mocha.
Mocha
Mocha, czasami nazywana również MochaJS, jest frameworkiem testowym, który działa zarówno w Node.js jak i w przeglądarce. Został wydany w 2011 roku i od tego czasu jest jednym z najbardziej popularnych frameworków testowych dla świata JavaScript. Jednakże, według raportu State of JavaScript, popularność Mochy spadła w ciągu ostatnich kilku lat, mimo że nadal jest to prawdopodobnie najbardziej używane i znane z narzędzi.
Ten framework sprawia, że testowanie asynchroniczne jest proste poprzez seryjne uruchamianie testów. Umożliwia to dokładne raportowanie i jednocześnie mapowanie nieprzechwyconych wyjątków do właściwych przypadków testowych. Mocha posiada niezwykle elastyczną konfigurację. Pozwala to na sparowanie go z bibliotekami, które są szczególnie potrzebne dla funkcjonalności takich jak asercje, wyśmiewanie, i tak dalej.
Wadą takiej elastyczności jest to, że Mocha wymaga więcej pracy dla jej początkowej konfiguracji. Ponadto, podczas gdy inne frameworki są już wyposażone w funkcjonalności asercji i szyderstwa, Mocha wymaga do tego dodatkowych narzędzi.
Oficjalna strona: mochajs.org
Repozytorium: github.com/mochajs/mocha
Puppeteer
Puppeteer jest biblioteką Node.js, która pozwala użytkownikom kontrolować bezgłową przeglądarkę Chrome lub Chromium. W ten sposób można zautomatyzować testy, które zazwyczaj wykonuje się ręcznie za pomocą zwykłej przeglądarki. Strona projektu wymienia kilka przykładów testów, które można wykonać:
- Generowanie zrzutów ekranu i plików PDF stron.
- Crawlowanie aplikacji SPA (single-page application) i generowanie wstępnie renderowanych treści (tj. „SSR” ).
- Automatyzacja składania formularzy, testowanie UI, wprowadzanie danych z klawiatury itp.
- Stwórz aktualne, zautomatyzowane środowisko testowe. Uruchamiaj testy bezpośrednio w najnowszej wersji Chrome, korzystając z najnowszych funkcji JavaScript i przeglądarki.
- Zapisz ślad czasowy swojej witryny, aby pomóc zdiagnozować problemy z wydajnością.
- Testuj rozszerzenia Chrome.
- Testim udostępnił darmowy rejestrator dla Puppeteera. Sprawdź go i korzystaj z niego tak często jak chcesz.
Oficjalna strona: developers.google.com/web/tools/puppeteer
Repozytorium: github.com/puppeteer/puppeteer
Jasmine
Jasmine jest frameworkiem testowym w JavaScript BDD (behavior-driven development).
Ten framework zawiera już całkiem sporo wszystkiego, czego potrzebujesz, aby zacząć testować. Ma wbudowane asercje i podwójne testy ze szpiegami, w przeciwieństwie do, powiedzmy, Mocha, który wymaga zainstalowania narzędzi innych firm dla tych funkcjonalności.
Jasmine jest jednak również elastyczny i może płynnie integrować się z dużą liczbą dodatkowych narzędzi do testowania. Możesz łatwo użyć Karmy jako narzędzia do uruchamiania testów lub zatrudnić Sinon.JS do swoich potrzeb w zakresie szyderstwa.
Oficjalna strona: jasmine.github.io/
Repozytorium: github.com/jasmine/jasmine
QUnit
QUnit był pierwotnie częścią biblioteki programistycznej jQuery. John Resig stworzył go do testowania jQuery, jQuery UI i jQuery Mobile. W 2008 roku, QUnit został wyodrębniony z bazy kodowej jQuery i wydany jako samodzielny framework, ale nadal wymagałby jQuery do pracy. W 2009 roku naprawiono to za pomocą przepisania, dzięki czemu QUnit w końcu uniezależnił się od jQuery.
Pomimo, że początkowo QUnit był skierowany do jQuery, obecnie jest on ogólnym frameworkiem, który może testować dowolny kod JavaScript, obsługując zarówno środowiska po stronie klienta, jak i serwera.
Można pomyśleć o QUnit jako o przedstawicielu JavaScript w rodzinie xUnit – frameworków do testów jednostkowych. Ma szybką i łatwą konfigurację. Ponadto, ponieważ istnieje już od co najmniej 12 lat, jest dobrze wspieranym narzędziem.
Oficjalna strona: qunitjs.com
Repozytorium: github.com/qunitjs/qunit
Jest
Jest to framework testujący dla JavaScript, który skupia się na prostocie. Wydany przez Facebook, Jest ma na celu pracę po wyjęciu z pudełka i bez konieczności konfiguracji.
Jeśli spojrzysz na stronę Jest „getting started”, zobaczysz, że możesz go zainstalować, napisać swój pierwszy test i uruchomić go w ciągu kilku minut, bez skomplikowanych ustawień lub dodatkowych instalacji. Kolejną zaletą Jest jest jego imponująca wydajność.
Jest używany głównie do testowania aplikacji React, ale to nie znaczy, że jesteś ograniczony do używania go do testowania tylko aplikacji napisanych za pomocą tego frameworka. Wręcz przeciwnie: możesz go używać do testowania aplikacji Node, Angular i Vue, żeby wymienić tylko kilka.
Oficjalna strona: jestjs.io/
Repozytorium: github.com/facebook/jest
Nieobecności godne uwagi
Możesz się zastanawiać, dlaczego niektóre znane narzędzia do testowania JavaScript nie trafiły na naszą listę. Może uważasz, że narzędzia takie jak Karma, Sinon, i Chai, między innymi, są wystarczająco popularne, aby znaleźć się na liście. Dlaczego ich nie uwzględniliśmy?
Po prostu, chcieliśmy utrzymać listę tak zwięzłą jak to tylko możliwe. Aby to zrobić, postanowiliśmy nie umieszczać na liście narzędzi testujących, które nie są frameworkami, ściśle mówiąc. Tak więc, to jest powód, dla którego super popularne narzędzie, takie jak Karma, nie znalazło się na liście: jest to test runner, a nie framework. To samo rozumowanie dotyczy Sinon (narzędzie do szyderstwa) i Chai (biblioteka asercji).
Możesz argumentować, że Puppeteer nie do końca pasuje do tej listy i w pewnym stopniu się z tym zgadzam. To znaczy, wszystkie inne narzędzia to frameworki bardziej odpowiednie do wykonywania testów jednostkowych, podczas gdy Puppeteer jest bardziej narzędziem do automatyzacji przeglądarek. Jest to jednak nadal framework do testowania, w tym sensie, że pozwala na projektowanie zautomatyzowanych testów, które są później uruchamiane bez interwencji człowieka.
Verdict: What’s the Best JavaScript Testing Framework?
Przedstawiliśmy pięć frameworków testujących dla JavaScript. Teraz nadszedł czas, aby spełnić obietnicę zawartą w tytule postu i wybrać najlepszy z nich. Aby to zrobić, będziemy oceniać frameworki według czterech kryteriów: koszt, instalacja, łatwość konfiguracji i krzywa uczenia się.
Ocena frameworków
Koszt
Pierwsze kryterium jest z pewnością najłatwiejsze do oceny. Wszystkie frameworki, które tutaj opisaliśmy są projektami open-source, więc możesz je pobrać i używać za darmo (jak w piwie). Tak więc, nie mamy tutaj wyraźnego zwycięzcy. Przejdźmy dalej.
Instalacja
Instalacja wszystkich powyższych narzędzi jest dość łatwa. W końcu można je wszystkie zainstalować za pomocą npm (lub, alternatywnie, Yarn.) Jednak niektóre z narzędzi oferują dodatkowe opcje instalacji.
Na przykład, oprócz npm i Yarn, można zainstalować QUnit jako samodzielny plik do pobrania. Ale to wymagałoby od ciebie przechowywania i zarządzania tym zasobem. Zamiast tego możesz użyć wersji hostowanej w CDN jQuery. Jasmine oferuje również samodzielną wersję, która nie zależy od Node i pozwala na uruchamianie specyfikacji za pomocą przeglądarki.
Więc, czy mamy tutaj zwycięzcę? Myślimy, że tak. Gdybyśmy mieli wybierać tylko na podstawie łatwości instalacji, mielibyśmy kolejne losowanie. Ale, jak widzieliśmy, QUnit i Jasmine oferują więcej opcji, ponieważ można ich używać jako samodzielnych bibliotek. Czy ta dodatkowa elastyczność jest przydatna? Twój przebieg może się różnić w tej kwestii, ale dla nas QUnit i Jasmine są zwycięzcami tutaj.
Zwycięzcy: QUnit i Jasmine
Łatwość konfiguracji
Teraz spójrzmy na łatwość konfiguracji. Jeśli chodzi o początkową konfigurację, mamy tu wyraźnego zwycięzcę: Jest. Framework ten obiecuje zero konfiguracji i spełnia tę obietnicę. Jasne, pozwala na opcjonalne konfiguracje, ale to niesamowite uczucie zainstalować framework testowy i mieć prawdziwy test działający w około dwie minuty, bez żadnej konfiguracji lub instalacji dalszych narzędzi.
Zwycięzca: Jest
Learning Curve
Na koniec krzywa uczenia się. Tutaj będziemy musieli ponownie wybrać Jest. Ponieważ jest wyposażony w szerokie API i nie wymaga tak wielu narzędzi firm trzecich jak inne frameworki, Jest nieuchronnie prezentuje mniej stromą krzywą uczenia się.
Zwycięzca: Jest
Here’s the Winner
Po omówieniu pięciu frameworków testujących JavaScript, a następnie przeanalizowaniu ich przy użyciu czterech kryteriów, nadszedł czas, aby wybrać zwycięzcę.
Więc, ponieważ Jest był zwycięzcą w dwóch z czterech kryteriów, których użyliśmy, zamierzamy wybrać Jest jako naszego zwycięzcę. Nie oznacza to, że nie powinieneś wypróbować innych narzędzi. Wręcz przeciwnie: eksperymentuj i ćwicz jak najwięcej, ponieważ to najlepszy sposób na naukę.
.