2012-03-15 10 views
68

Mam problem z uzyskaniem Mocha do pracy zgodnie z oczekiwaniami, i chciałbym powiedzieć, że jest to udokumentowane, ale tam (wydaje się) nie ma zbyt wiele dokumentacji na temat tego, .Jak zainstalować i uruchomić Mocha, moduł testowy Node.js? Pobieranie "mocha: command not found" po zainstalowaniu

mam zainstalowane go za pomocą npm (zarówno globalnie i lokalnie), a za każdym razem, gdy uruchomię go uzyskać:

$ mocha 
mocha: command not found 

Ok, więc pomyślałem, że nie jest w moim PATH, więc próbowałem działa to bezpośrednio,

$ ./node_modules/mocha/bin/mocha 
execvp(): No such file or directory 

Wreszcie, próbowałem uderzenia innego bin plik, a następnie dostał,

$ ./node_modules/mocha/bin/_mocha 
path.existsSync is deprecated. It is now called `fs.existsSync`. 

    . 

    ✔ 1 tests complete (1ms) 

Jak mogę po prostu wykonać testy jednym poleceniem? Vows wydaje się wam pozwalać, ale słyszałem, że Mocha jest lepszym wyborem, po prostu nie mogę sprawić, żeby działało poprawnie.

Jakieś myśli na temat błędu, który dostałem powyżej w trzeciej próbie?

Edit:

biegnę,

  • Ubuntu 11.10 64-bitowych
  • node.js 0.7.5
  • npm 1.1.8
  • mokka 0,14. 1
  • powinno być 0.6.0
+2

z węzłem 0,6.12, npm 1.1.4 i wykonanie 'npm install mocha', otrzymuję'./Node_modules/.bin/mocha' zgodnie z oczekiwaniami. 'sudo npm install -g mocha' pobiera mnie'/usr/local/bin/mocha'. Jeśli to nie działa poprawnie w twoim środowisku, może to być błąd, lub po prostu mocha nie zaktualizowany do obsługi węzła 0.7. *. Jeśli chodzi o ostrzeżenie o wycofaniu, 'exist' i' existsSync' zostały przeniesione z 'path' na' fs' w węźle 0.7.1. –

+0

Zmieniono wersję na Node.js 0.6.12, dodano "./node_modules/.bin" do mojej zmiennej PATH i wszystko jest w porządku ze światem. –

Odpowiedz

138

nie chcesz, twoje testy biblioteczne niepowodzenie w zależności od konfiguracji maszyny (mokka jako globalnej, globalnej wersji mocha, etc), tak aby korzystać z lokalnego mocha, który działa na różnych platformach jest:

node node_modules/.bin/mocha 

npm umieszcza aliasy do wszystkich plików binarnych w twoich zależnościach w tym specjalnym folderze. Wreszcie npm doda node_modules/bin do PATH automatycznie po uruchomieniu skryptu npm, więc w swojej package.json można zrobić tylko:

"scripts": { 
    "test": "mocha" 
} 

i powołać go

npm test 
+1

+1, Używałem mokki od jakiegoś czasu, ale nie zdawałem sobie z tego sprawy. To powinna być zaakceptowana odpowiedź! – gihanchanuka

+1

Jeśli nie chcesz instalować mocha na całym świecie, dodaj "skrypty": {"test": "./node_modules/.bin/mocha"} ' –

+5

@ michael.kebe nie, nie musisz tego zaznaczać Ścieżka do użycia lokalnej mocha, npm już dodaje "./node_modules/.bin" do zmiennej $ PATH, więc domyślnie będzie używać wersji lokalnej. – Benja

15

Po dalszego czytania i potwierdzenia od Linusa G Thiel powyżej, uważam po prostu musiałem,

  • Downgrade do node.js 0.6.12
  • I obaj,
    • Install Mocha jako globalny
    • Dodaj ./node_modules/.bin do mojego PATH
+4

Mam węzeł 0.8.12 i mocha zarówno globalnie, jak i lokalnie zainstalowane (dla różnych projektów) i działają. Więc nie trzeba obniżać węzła. W przypadku lokalnie instalowanej mokki, po prostu upewnij się, że twoja PATH jest ustawiona jak wyżej, lub wywołaj ją bezpośrednio ze swojego skryptu (Makefile lub tag "scripts"). –

+1

Mocha zainstalowana lokalnie i globalnie, ale nie została znaleziona na ścieżce (Win8). Musiałem ręcznie dodać folder "./node_modules/.bin" w stosunku do mojego projektu do mojej zmiennej PATH, zrestartować konsolę, a następnie uruchomiłbym polecenie "mocha". Nie idealny, ale szybki hack, żeby to działało. Być może, jeśli masz lokację na najwyższym poziomie, aby zainstalować lokalnie mocha, a następnie połącz ją z tą ścieżką, aby móc jej użyć gdzie indziej. – Ali

+2

O nie, to nie powinna być akceptowana odpowiedź ... –

Powiązane problemy