Node.js test modülü Mocha'yı nasıl kurar ve çalıştırırsınız? Yüklemeden sonra "mocha: komut bulunamadı" mesajı alınıyor


92

Mocha'nın beklendiği gibi çalışmasını sağlamakta güçlük çekiyorum ve belgelendiği gibi söylemeyi çok isterim, ancak aslında bir şeyi çalıştırma konusunda çok fazla belge yok (görünüyor).

Kullanarak npm(hem küresel hem de yerel olarak) yükledim ve her çalıştırdığımda şunu alıyorum:

$ mocha
mocha: command not found

Tamam, bende olmadığını anladım PATH, bu yüzden doğrudan çalıştırmayı denedim.

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

Sonunda, diğer bindosyaya vurmayı denedim ve

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

  .

  ✔ 1 tests complete (1ms)

Testlerimi tek bir komutla nasıl gerçekleştirebilirim? Yeminler sana izin veriyor gibi görünüyor, ama Mocha'nın daha iyi bir seçim olduğunu duydum, sadece düzgün çalışmasını sağlayamıyorum.

Ve üçüncü denememde yukarıda aldığım hata hakkında herhangi bir fikriniz var mı?

Düzenle:

Koşuyorum,

  • Ubuntu 11.10 64 bit
  • Node.js 0.7.5
  • npm 1.1.8
  • mocha 0.14.1
  • 0.6.0 olmalı

2
0.6.12 düğümü, npm 1.1.4 ve yürütülürken beklendiği gibi npm install mochaalıyorum ./node_modules/.bin/mocha. sudo npm install -g mochabeni alır /usr/local/bin/mocha. Bu, ortamınızda düzgün çalışmazsa, bir hata olabilir veya yalnızca mocha 0.7. * Düğümünü destekleyecek şekilde güncellenmemiş olabilir. Senin kullanımdan kaldırılması uyarısı ile ilgili olarak, existsve existsSyncgelen taşındı pathiçin fsdüğüm 0.7.1 yılında.
Linus Thiel

Node.js 0.6.12'ye düşürdüm, PATH'ıma "./node_modules/.bin" ekledim ve her şey doğru.
Stephen Melrose

Yanıtlar:


184

npm 5.2.0'dan bu yana, çalıştırırsanız bunu çok daha basit hale getiren, npm'ye eklenen yeni bir "npx" komutu vardır:

npx mocha <args>

Not: isteğe bağlı değiştirgeler çalıştırılan komuta iletilir (bu durumda mocha)

bu otomatik olarak yerel olarak yüklenmiş mocha'nızdan çalıştırılabilir "mocha" komutunu seçecektir (doğru olanın her zaman siz ve diğer herkes tarafından kullanıldığından emin olmak için her zaman bir dev bağımlılığı olarak ekleyin).

Mocha'yı yüklemediyseniz, bu komutun otomatik olarak en son sürümü alacağına ve kullanacağına dikkat edin; bu, bazı araçlar (örneğin, iskeleler gibi) için harikadır, ancak isteyebileceğiniz bazı bağımlılıklar için en çok tavsiye edilen seçenek olmayabilir. belirli bir sürüme sabitleme.

Sen NPX daha fazla bilgi bulabilirsiniz burada


Şimdi, doğrudan mocha'yı çağırmak yerine, özel bir npm betiği tanımlamak istiyorsanız, diğer npm ikili dosyalarını çağırabilecek bir takma ad ...

Kütüphane testlerinizin makine kurulumuna bağlı olarak başarısız olmasını istemiyorsanız (küresel mocha olarak mocha, global mocha sürümü vb.), platformlar arası çalışan yerel mocha'yı kullanmanın yolu:

node node_modules/.bin/mocha

npm, bu özel klasöre bağımlılıklarınızdaki tüm ikili dosyalara takma adlar koyar. Son olarak, npm, bir npm betiği çalıştırırken PATH'ye otomatik olarak node_modules / .bin ekler, böylece package.json'unuzda şunları yapabilirsiniz:

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

ve onu çağır

npm test

1
+1, bir süre önce mocha kullanıyordum ama farkında değildim. Kabul edilen cevap bu olmalı!
gihanchanuka

7
@ michael.kebe hayır, yerel mocha'yı kullanmak için bu yolu belirtmeniz gerekmez, npm zaten "./node_modules/.bin" dosyasını $ PATH'a ekler, bu nedenle varsayılan olarak yerel sürümü kullanır.
Benja

Komutun node_modules / mocha / bin / mocha olması gerektiğine inanıyorum, node_modules / .bin / mocha değil
Mina Luke

3
@MinaLuke de işe yarıyor ama kötü bir fikir, /node_modules/.bin/{module-binary-name}npm'nin bağımlılıklarınızdaki ikili dosyalara kısayollar koyduğu yerdir, bir sonraki sürümde bozulabileceğinden, bağımlılık kaynaklarındaki bir dosyaya doğrudan başvurmamalısınız.
Benja

1
@DougBarbieri güzel yakalama, bu eski bir cevap, npx'den bahsetmek için güncelleyeceğim, teşekkürler!
Benja

18

Daha fazla okuduktan ve yukarıdaki Linus G Thiel'den onay aldıktan sonra, sadece yapmam gerektiğini anladım

  • Node.js 0.6.12 sürümüne geçme
  • Ya da
    • Mocha'yı global olarak yükleyin
    • Ekle ./node_modules/.biniçin benimPATH

4
0.8.12 ve mocha düğümüm var (farklı projeler için) ve çalışıyorlar. Dolayısıyla, düğümün sürümünü düşürmeye gerek yok. Yerel olarak yüklenmiş mocha için, PATH'inizin yukarıdaki gibi ayarlandığından emin olun veya onu doğrudan komut dosyanızdan çağırın (Makefile veya "scripts" etiketi).
Qichao Dong

1
Mocha'yı yerel ve global olarak kurdum ama yolda bulunamadı (Win8). Projeme göre './node_modules/.bin' klasörünü PATH'ıma manuel olarak eklemem gerekiyordu, konsolu yeniden başlattım ve 'mocha' yazarak işe yarayacaktı. İdeal değil, ancak çalışmasını sağlamak için hızlı bir hack. Belki de mocha'yı yerel olarak yüklemek için en üst düzeyde bir konumunuz varsa, o YOLA bağlantı verin, böylece başka bir yerde kullanabilirsiniz.
Ali

1

Pencereler için :

Package.json

  "scripts": {
    "start": "nodemon app.js",
    "test": "mocha"
  },

sonra komutu çalıştırın

npm run test

1

Mocha için düğüm modüllerini kurarken aşağıdaki komutları denedim

  • npm yükleme
  • npm mocha yükle
  • npm install --save-dev mocha
  • npm mocha -g # kurup global olarak da kurun

ve denediğim mocha testini çalıştırırken veya yürütürken

  • mocha testi
  • npm çalıştırma testi
  • mocha test testi \ index.test.js
  • npm testi

ancak aşağıdaki hatayı alıyordum:

'Mocha' dahili veya harici komut olarak tanınmıyor

Dolayısıyla, her şeyi denedikten sonra, Sistem Değişkenleri altındaki ortam değişkenlerine giden yolu şu şekilde ayarladınız:

C: \ Program Dosyaları \ nodejs \

ve işe yaradı :)


0

Çalıştırmak için Mocha ile mochaüzerinde küresel mocha yüklemeniz gerekir sizin terminalden komuta thismakinesine:

npm install --global mocha

Sonra cdsizin için projectFolder / testi ve runmocha yourTestFileName.js


Bir geliştirme bağımlılığı olarak mochakendi içinde kullanılabilir hale getirmek istiyorsanız package.json:

npm install --save-dev mocha

Ardından mochaiçindeki komut dosyalarınıza ekleyin package.json.

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

Ardından npm testterminalinizin içinde koşun .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.