Nie rozumiem, jak w meteorze zrobić programowanie sterowane testami.
Nie widzę tego w dokumentacji ani w FAQ. Nie widzę żadnych przykładów ani czegoś takiego.
Widzę, że niektóre pakiety używają Tinytest.
Potrzebowałbym odpowiedzi od programistów, jaki jest plan dotyczący tego. Coś w rodzaju:
- możliwe, brak dokumentacji, zrób to sam
- meteor nie jest zbudowany w sposób umożliwiający tworzenie testowalnych aplikacji
- jest to planowana funkcja
- itp
Odpowiedzi:
Aktualizacja 3 : Od wersji Meteor 1.3 meteor zawiera przewodnik po testach z instrukcjami krok po kroku dotyczącymi testów jednostkowych, integracji, akceptacji i obciążenia.
Aktualizacja 2 : Od 9 listopada 2015 r. Velocity nie jest już obsługiwane . Xolv.io koncentruje swoje wysiłki na szympansie , a Meteor Development Group musi wybrać oficjalną platformę testową .
Aktualizacja : Velocity jest oficjalnym rozwiązaniem testowym firmy Meteor od 0.8.1.
W tej chwili niewiele napisano o automatycznych testach z Meteor. Oczekuję, że społeczność Meteor rozwinie sprawdzone metody testowania, zanim cokolwiek znajdzie się w oficjalnej dokumentacji. W końcu Meteor osiągnął w tym tygodniu 0,5, a sytuacja nadal szybko się zmienia.
Dobra wiadomość: możesz używać narzędzi testowych Node.js z Meteor .
W moim projekcie Meteor przeprowadzam testy jednostkowe z Mocha, używając Chai do asercji. Jeśli nie potrzebujesz pełnego zestawu funkcji Chai, polecam zamiast tego użycie should.js . W tej chwili mam tylko testy jednostkowe, chociaż możesz również pisać testy integracyjne z Mocha.
Pamiętaj, aby umieścić testy w folderze "testy" , aby Meteor nie próbował ich wykonywać.
Mocha obsługuje CoffeeScript , mój wybór języka skryptowego dla projektów Meteor. Oto przykładowy plik Cakefile z zadaniami do uruchamiania testów Mocha. Jeśli używasz JS z Meteor, możesz swobodnie dostosować polecenia do pliku Makefile.
Twoje modele Meteor będą wymagały niewielkiej modyfikacji, aby wystawić się na działanie Mocha, a to wymaga pewnej wiedzy na temat działania Node.js. Pomyśl o każdym pliku Node.js jako wykonywanym w jego własnym zakresie. Meteor automatycznie eksponuje obiekty w różnych plikach, ale zwykłe aplikacje Node - takie jak Mocha - tego nie robią. Aby nasze modele były testowalne przez Mocha, wyeksportuj każdy model Meteor z następującym wzorem CoffeeScript:
... a na początku testu Mocha zaimportuj model, który chcesz przetestować:
Dzięki temu możesz zacząć pisać i uruchamiać testy jednostkowe w swoim projekcie Meteor!
źródło
Meteor.whatever
funkcji. Otrzymuję Meteor to niezdefiniowane błędy. Czy istnieje sposób, aby wyraźnie wymagać Meteor, aby obejść ten problem?Meteor
obiekt jest niedostępny, podobnie jak wszelkie zależności modelu ujawnione przez Meteor. Udoskonalenie tego procesu będzie wymagało utworzenia wystąpienia środowiska aplikacji w Mocha i wystawieniaMeteor
obiektu na testy. Na pewno zaktualizuję tę odpowiedź, gdy będę mieć bardziej kompletne rozwiązanie testowe. W międzyczasie prosimy o kontakt z wszelkimi pytaniami lub sugestiami ulepszeń.Witam wszystkich, checkout laika - cała nowa platforma testowa dla meteor http://arunoda.github.io/laika/
Możesz jednocześnie przetestować serwer i klienta.
Zastrzeżenie: jestem autorem Laika.
źródło
Zdaję sobie sprawę, że odpowiedź na to pytanie została już udzielona, ale myślę, że przydałoby się trochę więcej kontekstu, w postaci dodatkowej odpowiedzi, podającej wspomniany kontekst.
Zajmowałem się rozwojem aplikacji w meteor, a także pakietami, zarówno poprzez implementację pakietu dla rdzenia meteorowego, jak i dla atmosfery .
Wygląda na to, że Twoje pytanie może składać się z trzech części:
Wygląda też na to, że gdzieś tam może być dodatkowe pytanie: 4. Jak można wdrożyć ciągłą integrację dla 1, 2 i 3?
Rozmawiałem i zacząłem współpracować z Naomi Seyfer (@sixolet) w głównym zespole firmy Meteor , aby uzyskać ostateczne odpowiedzi na wszystkie te pytania w dokumentacji.
Przesłałem wstępne żądanie ściągnięcia adresujące 1 i 2 do rdzenia meteor: https://github.com/meteor/meteor/pull/573 .
Niedawno odpowiedziałem też na to pytanie: Jak przeprowadzasz testy meteorytów?
Myślę, że @Blackcoat ostatecznie odpowiedział 3 powyżej.
Jeśli chodzi o bonus, 4, sugerowałbym użycie cirleci.com przynajmniej do ciągłej integracji z własnymi aplikacjami. Obecnie obsługują przypadek użycia opisany przez @Blackcoat. Mam projekt, w którym pomyślnie przeszedłem testy napisane w skrypcie coffeescript, aby uruchomić testy jednostkowe z mokką, prawie tak, jak opisał @Blackcoat.
Aby zapewnić ciągłą integrację z rdzeniem meteorytu i inteligentnymi pakietami, rozmawiamy z Naomi Seyfer z założycielką circleci, aby sprawdzić, czy w najbliższym czasie uda nam się wdrożyć coś niesamowitego.
źródło
RTD jest obecnie przestarzałe i zastąpione przez Velocity, oficjalną platformę testową dla Meteor 1.0. Dokumentacja jest wciąż stosunkowo nowa, ponieważ Velocity jest w trakcie intensywnego rozwoju. Więcej informacji można znaleźć w repozytorium Velocity Github , stronie internetowej Velocity i podręczniku testowania Meteor (treści płatne)
Zastrzeżenie: Jestem jednym z głównych członków zespołu Velocity i autorem książki.
Sprawdź RTD, pełne ramy dla badań Meteor tutaj rtd.xolv.io . Obsługuje Jasmine / Mocha / custom i działa zarówno ze zwykłym JS, jak i kawą. Obejmuje również pokrycie testowe, które łączy pokrycie jednostki / serwera / klienta.
Przykładowy projekt tutaj
Blog wyjaśniający testy jednostkowe z Meteor tutaj
Podejście do testów akceptacyjnych e2e przy użyciu Selenium WebdriverJS i Meteor tutaj
Mam nadzieję, że to pomoże. Zastrzeżenie: jestem autorem RTD.
źródło
Często korzystałem z tej strony i wypróbowałem wszystkie odpowiedzi, ale od punktu wyjścia dla mojego początkującego uznałem je za dość zagmatwane. Kiedy miałem jakiekolwiek problemy, byłem zbity z tropu, jak je naprawić.
To rozwiązanie jest naprawdę łatwe do rozpoczęcia, jeśli nie jest jeszcze w pełni udokumentowane, więc polecam je osobom takim jak ja, którzy chcą robić TDD, ale nie są pewni, jak działa testowanie w JavaScript i które biblioteki podłączają do czego:
https://github.com/mad-eye/meteor-mocha-web
Do Twojej wiadomości, stwierdziłem, że muszę również użyć pakietu Atmosphere routera, aby utworzyć trasę `` / tests '', aby uruchomić i wyświetlić wyniki testów, ponieważ nie chciałem, aby za każdym razem ładował moją aplikację.
źródło
meteor-mocha-web
zmocha-phantomjs
do automatyzacji testowania i dla CI. Tego używamy. Pełne ujawnienie - jestem jednym z opiekunówmeteor-mocha-web
.Jeśli chodzi o korzystanie z Tinytest, możesz rzucić okiem na te przydatne zasoby:
Podstawy są wyjaśnione w tym screencast: https://www.eventedmind.com/feed/meteor-testing-packages-with-tinytest
Gdy zrozumiesz pomysł, będziesz potrzebować publicznej dokumentacji API dla
tinytest
. Na razie jedyna dokumentacja na ten temat znajduje się na końcu źródłatinytest
pakietu: https://github.com/meteor/meteor/tree/devel/packages/tinytestPonadto, screencast mówi o tym
test-helpers
, że możesz chcieć rzucić okiem na wszystkich dostępnych pomocników tutaj: https://github.com/meteor/meteor/tree/devel/packages/test-helpers Często w każdym z nich znajduje się dokumentacja plikPrzeglądanie istniejących testów opakowań firmy Meteor dostarczy wielu przykładów. Jednym ze sposobów jest wyszukanie
Tinytest.
lubtest.
w katalogu pakietów kodu źródłowego meteorźródło
Testowanie stanie się podstawową częścią Meteor w nadchodzącej wersji 1.3. Wstępne rozwiązanie bazuje na Mocha i Chai.
Oryginalne dyskusje na temat minimalnego opłacalnego projektu można znaleźć tutaj, a szczegóły dotyczące pierwszej implementacji można znaleźć tutaj .
MDG opracowało początkowe fragmenty dokumentacji przewodnika do testów, którą można znaleźć tutaj , a tutaj jest kilka przykładowych testów .
Oto przykład testu publikacji z linku powyżej:
źródło
Robię funkcjonalnej integracji / testy z Meteor + Mocha w przeglądarce. Mam coś podobnego do następującego (w skrypcie kawowym dla lepszej czytelności):
Na kliencie ...
... a na serwerze:
Oczywiście w ten sam sposób możesz przeprowadzić testy jednostkowe po stronie klienta . Jednak do testów integracyjnych dobrze jest mieć całą infrastrukturę Meteor w pobliżu.
źródło
Jak powiedział Blackcout, Velocity to oficjalny framework TDD dla Meteor. Ale w tej chwili strona internetowa velocity nie oferuje dobrej dokumentacji. Polecam więc obejrzeć:
źródło
Inną opcją, łatwo dostępną od wersji 0.6.0, jest uruchomienie całej aplikacji z lokalnych inteligentnych pakietów, z minimalną ilością kodu poza pakietami, aby uruchomić aplikację (prawdopodobnie wywołując konkretny inteligentny pakiet, który jest podstawą twojego app).
Następnie możesz wykorzystać Tinytest firmy Meteor, który doskonale nadaje się do testowania aplikacji Meteor.
źródło
Z powodzeniem używam xolvio: cucumber and velocity do moich testów. Działa naprawdę dobrze i działa w sposób ciągły, więc zawsze możesz zobaczyć, że testy kończą się pomyślnie.
źródło
Meteor + TheIntern
Jakoś udało mi się przetestować aplikację Meteor z TheIntern.js.
Chociaż jest to na moją potrzebę. Ale nadal myślę, że może to kogoś poprowadzić we właściwym kierunku i dzielę się tym, co zrobiłem, aby rozwiązać ten problem.
Jest
execute
funkcja, która pozwala nam uruchomić kod JS, poprzez który możemy uzyskać dostęp dowindow
obiektu przeglądarki, a tym samymMeteor
również.Chcesz dowiedzieć się więcej o wykonywaniu
Tak
test suite
wygląda moje podejście do testów funkcjonalnychAby dowiedzieć się więcej, to jest moje sedno
Uwaga: nadal jestem na bardzo wczesnym etapie z tym rozwiązaniem. Nie wiem, czy mogę z tym przeprowadzić złożone testy, czy nie. Ale jestem tego całkiem pewny.
źródło
Prędkość nie jest jeszcze dojrzała. Mam problemy z setTimeout, aby używać prędkości. Do testów jednostkowych po stronie serwera możesz użyć tego pakietu .
Jest szybsza niż prędkość. Velocity wymaga ogromnego czasu, kiedy testuję dowolną specyfikację przy logowaniu. Za pomocą kodu Jasmine możemy przetestować dowolną metodę i publikację po stronie serwera.
źródło