Testy jednostkowe Node.js [zamknięte]

164

Czy są obecnie dostępne dobre frameworki do testów jednostkowych node.js (po stronie serwera)? Szukam czegoś głębszego niż dostarczony moduł Assert.

znak
źródło

Odpowiedzi:

66

Skończyło się na korzystaniu z node-unit i jestem z tego naprawdę zadowolony.

Używałem Expresso pierwotnie ale fakt, że działa on testy równolegle spowodowało kilka problemów. (Na przykład używanie urządzeń bazodanowych nie działa dobrze w tej sytuacji).

zło
źródło
25
Expresso nie zmusza Cię do równoległego uruchamiania testów. Podaj mu argument --serial, a uruchomi je wszystkie w wesołej kolejności.
einaros
3
Właśnie pobrany i użyty nodeunit ... robi dokładnie to, co mówi, zadziałał za pierwszym razem ftw!
Michael Dausmann,
1
Nodeunit jest trochę dziwny, ponieważ wymaga, aby każdy test wywoływał .done()imho.
Kos
2
Gdybym teraz zaczynał nowy projekt, prawdopodobnie
użyłbym
1
Węzeł wymaga .done()uwzględnienia testowania asynchronicznego. Zgadzam się, że czasami może to być trochę nieporęczne, ale ma świetny powód, aby robić to w ten sposób.
L0j1k
48

Szukałem też porządnego frameworka testowego dla węzła i znalazłem Mocha . Jest oficjalnym następcą Expresso i wydaje się bardzo dojrzały.

Pozwala na podłączanie różnych bibliotek asercji, oferuje reporterzy do pokrycia kodu i innych rzeczy (możesz podłączyć własne). Może uruchamiać synchronizację lub asynchronicznie i ma zwięzły interfejs API.

Spróbuję i zdam raport ...

EDYTOWAĆ:

Po niesamowitej ilości czasu poświęconego innym projektom w końcu wróciłem do projektu Javascript i miałem czas na zabawę z mokką. Mogę poważnie polecić jej używanie. Testy czytają bardzo ładnie, integracja z gulpem jest świetna, a testy przebiegają bardzo szybko. Udało mi się skonfigurować automatyczne, samodzielne, a także testy w przeglądarce (browserify) i odpowiadające im raporty pokrycia kodu w około pół dnia (większość czasu spędziłem na zrozumieniu, jak korzystać z browserify z gulp). Dla mnie mocha wydaje się bardzo dobrym wyborem na framework testowy.

AKTUALIZACJA:

Nadal jestem bardzo przekonany o Mocha. Integracja z chai pozwala na podłączenie różnych stylów asercji. Możesz sprawdzić działającą konfigurację w tym projekcie github . Używam go teraz z karmą, integrując raport pokrycia kodu, automatyczne obserwatory i dobrą integrację z IntelliJ

bennidi
źródło
Link do projektu github jest uszkodzony. Czy mógłbyś go odnowić?
karlisup
1
Pierwsze kroki z Mocha - brianstoner.com/blog/testing-in-nodejs-with-mocha
Nicholas Blasgen
15

Osobiście korzystałem tylko z modułu assert, ale też chcę więcej. Przejrzałem wiele modułów węzłów, a popularne frameworki testów jednostkowych to węzły-jednostka i powinny (które są tworzone przez tego samego gościa co Expresso (może zaktualizowana nazwa?)

Śluby również wyglądają obiecująco.

jtsao22
źródło
15
Głosuję za tobą tylko za ten kalambur.
ThomasReggi,
15

Osobiście utknąłem w Expresso , ale istnieje kilka różnych frameworków, które obsługują większość stylów testowania.

Joyent ma obszerną listę ; daj temu szansę.

einaros
źródło
1
Expresso jest jedynym, który ma dla mnie sens i działa poprawnie z kodem asynchronicznym. Próbowałem ślubów i qunit.
balupton,
5

śluby jest stałe badanie biblioteka jednostką node.js ale składnia jest nużące.

Napisałem cienką abstrakcję zwaną ślubowaniem - płynna vows dzięki której API można łączyć w łańcuch.

Napisałem też inną abstrakcję, [vows-is], która opiera się na ślubowaniu-płynnym i odsłania składnię w stylu BDD.

Przykładem może być

var is = require("vows-is");

is.suite("testing is fun").batch()

    .context("is testing fun?")
        .topic.is("yes")
        .vow.it.should.equal("yes")

.suite().run({
    reporter: is.reporter
});

Więcej przykładów

Raynos
źródło
6
Amen, że składnia ślubowania jest przerażająca IMO
Donn Felker
Miałem zabawę z przysięgami z apetycznym opakowaniem. Wyglądał na dobry pomysł na przetestowanie API JSON, ale szybko się nie udał. Wydaje mi się również, że interfejsy API, które są silnie zorientowane na łączenie wywołań w łańcuchy, są trudne w użyciu i trudne do debugowania. Wyglądają dobrze na przykładach, ale nie działają dobrze w rzeczywistym świecie.
drekka
@drekka przysięgi i ślubowania są straszne. użyj
mokki
Próbuję tego teraz, ale wydaje się, że napotykam na podobną grupę problemów.
drekka
wtedy musisz go źle używać. spróbuj przeczytać gist.github.com/2896455 . @drekka
Raynos
1

Jeśli znasz QUnit , możesz użyć node-qunit, który jest rodzajem opakowania węzłów wokół istniejącego frameworka QUnit.

Zorayr
źródło
0

Pierwotnie wykonany dla node.js, deadunit jest testowanie jednostki biblioteki javascript dla node.js oraz przeglądarce. Niektóre z jego unikalnych atrybutów:

  • Łatwa nauka
  • Może wyświetlać wyniki testów w wierszu poleceń (kolorowy lub zwykły tekst) lub w formacie html
  • Wyświetla rzeczywiste wiersze kodu, w których znajdują się twoje potwierdzenia, więc twoje dane wyjściowe mają sens nawet jeśli nie spędzasz dużo czasu na pisaniu komentarzy do testu
  • Ma proste countpotwierdzenie, które ułatwia obsługę oczekiwanych wyjątków i asynchronicznych potwierdzeń
  • wypisuje wyjątek i wszelkie załączone dane, które mają
  • poinformuje Cię, jeśli Twój kod się zawiesza (coś, czego nie chcesz, ale zwykle pozostaje niezauważone)
  • Posiada interfejs API sterowany zdarzeniami, który umożliwia przesyłanie strumieniowe wyników testów w sieci lub w dowolny sposób.
  • Obsługuje testowanie z włóknami węzłowymi
BT
źródło
0

Właśnie załadowałem projekt, którego używam do testów jednostkowych nodejs z karmą i Jasmine: narma . Twoje moduły węzłów są ładowane do przeglądarki nodewebkit, dzięki czemu możesz uruchamiać moduły węzłów i używać bibliotek, takich jak jquery, w tej samej stercie.

noamtcohen
źródło
0

studio testowe to pakiet npm, który zapewnia potężny, oparty na sieci Web interfejs do testowania jednostkowego. Obsługuje takie rzeczy, jak wykonywanie pojedynczych lub grup testów i przechodzenie inspektora węzła do poszczególnych testów. Obecnie obsługuje mokkę, a więcej ram będzie obsługiwanych w przyszłości, biorąc pod uwagę zapotrzebowanie.

Przeczytaj więcej na ten temat tutaj .

Zastrzeżenie: jestem autorem.

Dale Anderson
źródło
1
wygląda na to, że to napisałeś, prawda? jeśli tak, powinieneś ujawnić ten fakt w swojej odpowiedzi.
strugee