Mochatest
domyślnie próbuje znaleźć pliki testowe , jak określić inny katalog, np. server-test
?
unit-testing
node.js
mocha
Freewind
źródło
źródło
.only
i.skip
zarządzać testami biegną. Ważne przy opracowywaniu określonej funkcji, gdy nie chcesz czekać przez cały zestaw testów na działanie.Odpowiedzi:
Edycja: ta opcja jest przestarzała: https://mochajs.org/#mochaopts
Jeśli chcesz to zrobić, nadal działając
mocha
w wierszu polecenia, ale./server-tests
zamiast tego chcesz uruchomić testy w folderze./test
, utwórz plik./test/mocha.opts
z tym w pliku:Jeśli chcesz uruchomić wszystko w tym folderze i podkatalogach, włóż to do
test/mocha.opts
mocha.opts
są argumentami przekazywanymi za pośrednictwem wiersza polecenia, więc utworzenie pierwszego wiersza tylko katalogu, w którym chcesz zmienić testy, spowoduje przekierowanie z./test/
źródło
mocha.opts
plik można umieścić w dowolnym miejscu, a następnie po prostu wykonaćmocha
ścieżkę do pliku konfiguracyjnego, na przykład:mocha --opts ./mocha.opts
Użyj tego:
Lub jeśli masz podkatalogi użyj tego:
Zwróć uwagę na użycie podwójnych cudzysłowów. Pominięcie ich może uniemożliwić uruchomienie testów w podkatalogach.
źródło
mocha test/server-test
mocha ./**/*.test.js
(więc mogę kolokować plik testowy z plikiem modułu). Wzorzec przestał działać, gdy dodałem plik testowy na innym poziomie w hierarchii plików niż reszta testów, i znalazłbym tylko ten jeden nieparzysty plik piłki, a nie tuzin innych, które żyły na tym samym poziomie w hierarchii . Naprawiono zawijanie w cudzysłów.--recursive
jak wyjaśnię poniżejOto jeden ze sposobów, jeśli masz podfoldery w folderze testowym, np
Następnie w systemie Linux możesz użyć polecenia find, aby wyświetlić rekursywnie wszystkie pliki * .js i przekazać je mokce:
źródło
--recursive
jak wyjaśnię poniżejmocha
nie ma opcji ustawienia pożądanej struktury katalogów w config?Dobrym sposobem na to jest dodanie skryptu npm „testowego” w pakiecie.json, który wywołuje mocha z właściwymi argumentami. W ten sposób plik package.json opisuje również strukturę testową. Pozwala to również uniknąć wszystkich problemów międzyplatformowych w innych odpowiedziach (podwójne lub pojedyncze cudzysłowy, „znajdź” itp.)
Aby mocha uruchomił wszystkie pliki js w katalogu „test”:
Następnie, aby uruchomić tylko testy dymu, należy:
W ten sposób możesz ustandaryzować uruchamianie wszystkich testów we wszystkich projektach, więc gdy nowy programista rozpocznie projekt lub inny, będzie wiedział, że „test npm” uruchomi testy. Jest w tym dobry precedens historyczny (na przykład Maven, większość starych projektów „robienia” również). Z pewnością pomaga CI, gdy wszystkie projekty mają to samo polecenie testowe.
Podobnie możesz mieć podzbiór szybszych testów „zadymienia”, które możesz uruchomić w mokce:
Następnie, aby uruchomić tylko testy dymu, należy:
Innym częstym wzorcem jest umieszczanie testów w tym samym katalogu co testowane źródło, ale wywoływanie plików testowych * .spec.js. Na przykład: src / foo / foo.js jest testowany przez src / foo / foo.spec.js.
Aby uruchomić wszystkie testy o nazwie * .spec.js zgodnie z konwencją:
Następnie, aby uruchomić wszystkie testy:
Widzisz wzór tutaj? Dobry. :) Spójność pokonuje murę .
źródło
Nie używaj opcji -g lub --grep, ten wzorzec działa na nazwę testu wewnątrz niego (), a nie na system plików. Obecna dokumentacja wprowadza w błąd i / lub całkowicie błędnie. Aby ograniczyć całe polecenie do części systemu plików, możesz przekazać wzorzec jako ostatni argument (nie jest to flaga).
Na przykład to polecenie ustawia twój reporter na spec, ale testuje tylko pliki js bezpośrednio w katalogu testowym serwera:
To polecenie zrobi to samo co powyżej, a ponadto uruchomi tylko przypadki testowe, w których ciąg / definicja testu it () zaczyna się od „Fnord:”:
źródło
Jeśli w node.js , niektóre nowe konfiguracje od Mocha v6 :
Opcja 1: Utwórz
.mocharc.json
w katalogu głównym projektu:Opcja 2: dodaj
mocha
właściwość do projektupackage.json
:Więcej opcji jest tutaj .
źródło
Uruchom wszystkie pliki w odpowiednich
test_directory
podkatalogachtest.js
lub użyj
--recursive
przełącznikaźródło
Właśnie miałem ten problem i rozwiązałem go, usuwając
--recursive
opcję (którą ustawiłem) i używając tej samej struktury sugerowanej powyżej:mochify "test/unit/**/*.js"
To uruchomiło
/test/unit/
dla mnie wszystkie testy we wszystkich katalogach , ignorując inne katalogi/test/
źródło
Teraz dni (rok 2020) możesz sobie z tym poradzić używając pliku konfiguracyjnego mokka :
Krok 1: Utwórz plik .mocharc.js w katalogu głównym aplikacji
Krok 2: Dodaj poniższy kod w pliku konfiguracyjnym mokki:
Aby uzyskać więcej opcji w pliku konfiguracyjnym, skorzystaj z tego linku: https://github.com/mochajs/mocha/blob/master/example/config/.mocharc.js
źródło
Korzystam z systemu Windows 7 przy użyciu node.js v0.10.0 i mocha v1.8.2 i npm v1.2.14. Właśnie próbowałem zmusić mokkę do skorzystania z testu ścieżki / jednostki, aby znaleźć moje testy. Po długim spędzeniu czasu i wypróbowaniu kilku rzeczy wylądowałem,
Użycie opcji „test / unit / *. Js” nie działa w systemie Windows. Z dobrych powodów, że powłoka systemu Windows nie rozwija symboli wieloznacznych, takich jak unixen.
Jednak użycie „test / unit” działa bez wzorca pliku. na przykład. „mocha test / unit” uruchamia wszystkie pliki znalezione w folderze test / unit.
To nadal uruchamia tylko jeden plik folderu jako test, ale można przekazać wiele nazw katalogów jako parametry.
Aby uruchomić pojedynczy plik testowy, możesz podać pełną ścieżkę i nazwę pliku. na przykład. „test mokka / jednostka / mytest1.js”
Właściwie instaluję w package.json dla npm „scripts”: {„test”: „mocha test / unit”},
Tak więc „npm test” uruchamia moje testy jednostkowe.
źródło
--recursive
opcji:mocha --recursive "some_dir"
node_modules\.bin\mocha "test\unit\*.js"
działa w systemie Windows.node_modules\.bin\mocha "**\*.js"
Działa również (moja prawdziwa sprawa). Ale szukam sposobu na wykluczenie katalogu node_modules . (Używam też gulpfile.js, ale czasami muszę uruchomić test bezpośrednio z mokką)Jeśli używasz
nodejs
, w swoimpackage.json
underscripts
global (-g)
instalacji:"test": "mocha server-test"
lub w"test": "mocha server-test/**/*.js"
przypadku dokumentów podrzędnychproject
instalacji:"test": "node_modules/mocha/bin/mocha server-test"
lub w"test": "node_modules/mocha/bin/mocha server-test/**/*.js"
przypadku dokumentów podrzędnychNastępnie po prostu uruchom swoje testy normalnie jako
npm test
źródło
npm run mocha "./test/*.spec.js!(~)"
ignoruje argument glob, alenode_modules/.bin/mocha "./test/*.spec.js!(~)"
nie robi tego.npm run mocha -- yourArgs
Jak wspomniano w @superjos w komentarzach użyj
mocha --recursive "some_dir"
źródło
To nie wydaje się być „łatwą” obsługą zmiany katalogu testowego.
Być może jednak powinieneś przyjrzeć się temu problemowi w odniesieniu do pytania.
źródło
Jak sugerował @ jeff-dickey, w katalogu głównym projektu utwórz folder o nazwie
test
. W tym folderze utwórz plik o nazwiemocha.opts
. Teraz, gdy staram się poprawić odpowiedź Jeffa, działało dla mnie zamiast podawać nazwę tylko jednego folderu testowego, podałem wzorzec, aby znaleźć wszystkie testy do uruchomienia w moim projekcie, dodając ten wiersz:*/tests/*.js --recursive
wmocha.opts
Jeśli zamiast tego chcesz określić dokładne foldery, w których będą wyszukiwane testy, zrobiłem coś takiego:
Mam nadzieję, że pomoże to każdemu, kto potrzebował czegoś więcej niż te, które zapewniają inne odpowiedzi
źródło