Yanıtlar:
Düzenle: Bu seçenek kullanımdan kaldırıldı: https://mochajs.org/#mochaopts
Hala mocha
komut satırında çalışarak bunu yapmak istiyorsanız , ancak testleri ./server-tests
bunun yerine bir klasörde çalıştırmak istiyorsanız ./test
, dosyada ./test/mocha.opts
sadece bununla bir dosya oluşturun :
server-tests
Bu klasördeki ve alt dizinlerdeki her şeyi çalıştırmak istiyorsanız, bunu test/mocha.opts
server-tests
--recursive
mocha.opts
komut satırı üzerinden iletilen bağımsız değişkenlerdir, bu nedenle ilk satırı yalnızca testleri değiştirmek istediğiniz dizine dönüştürmek, ./test/
mocha.opts
dosyanın istediğiniz yere yerleştirilebileceğini ve daha sonra mocha
örneğin yapılandırma dosyasına giden yolu belirterek yürütebilirsiniz :mocha --opts ./mocha.opts
Bunu kullan:
mocha server-test
Veya alt dizinleriniz varsa bunu kullanın:
mocha "server-test/**/*.js"
Çift tırnak kullanımına dikkat edin. Bunları atlarsanız, alt dizinlerde testler gerçekleştiremeyebilirsiniz.
mocha test/server-test
mocha ./**/*.test.js
(böylece test dosyasını modül dosyasıyla birleştirebilirim). Dosya hiyerarşisinde, testlerin geri kalanından farklı bir düzeyde bir test dosyası eklediğimde, desen benim için durdu ve hiyerarşide aynı seviyede yaşayan düzinelerce dosyayı değil, sadece bir tek top dosyasını bulurdu . Alıntılarla kaydırma düzeltildi.
--recursive
aşağıda açıkladığım gibi kullanın
Test klasörünüzde alt klasörler varsa, örneğin,
/test
/test/server-test
/test/other-test
Daha sonra linux'da tüm * .js dosyalarını tekrar tekrar listelemek ve mocha'ya iletmek için find komutunu kullanabilirsiniz:
mocha $(find test -name '*.js')
--recursive
aşağıda açıkladığım gibi kullanın
mocha
config'te istenen dizin yapısını ayarlama seçeneği yok mu?
Bunu yapmanın en iyi yolu mocha'yı doğru argümanlarla çağıran package.json dosyasına bir "test" npm betiği eklemektir. Bu şekilde package.json, test yapınızı da açıklar. Diğer cevaplardaki tüm bu platformlar arası sorunları önler (çift tırnaklı tek tırnak, "bul" vb.)
Mocha "test" dizinindeki tüm js dosyalarını çalıştırmak için:
"scripts": {
"start": "node ./bin/www", -- not required for tests, just here for context
"test": "mocha test/**/*.js"
},
Sonra sadece duman testlerini çalıştırmak için:
npm test
Tüm projelerde tüm testlerin yürütülmesini bu şekilde standart hale getirebilirsiniz, bu nedenle projenizde yeni bir geliştirici başladığında veya "npm test" in testleri çalıştıracağını bilirler. Bunun için iyi bir tarihsel öncelik vardır (Maven, örneğin, eski okulların çoğu "projeler" de yapar). Tüm projeler aynı test komutuna sahip olduğunda CI'ye yardımcı olur.
Benzer şekilde, mocha'nın çalışmasını isteyebileceğiniz daha hızlı "duman" testlerinin bir alt kümesine sahip olabilirsiniz:
"scripts": {
"test": "mocha test/**/*.js"
"smoketest": "mocha smoketest/**/*.js"
},
Sonra sadece duman testlerini çalıştırmak için:
npm smoketest
Diğer bir yaygın desen, testlerinizi test ettikleri kaynakla aynı dizine yerleştirmektir, ancak test dosyalarını * .spec.js olarak adlandırın. Örneğin: src / foo / foo.js, src / foo / foo.spec.js tarafından test edilir.
* .Spec.js adlı tüm testleri kurallara göre çalıştırmak için:
"scripts": {
"test": "mocha **/*.spec.js"
},
Sonra tüm testleri çalıştırmak için:
npm test
Buradaki deseni görüyor musunuz? İyi. :) Tutarlılık mura yener .
-G veya --grep seçeneğini kullanmayın, bu desen dosya sistemi değil, içindeki testin adıyla () çalışır. Mevcut dokümantasyon yanıltıcı ve / veya bununla ilgili açık yanlış. Komutun tamamını dosya sisteminin bir bölümü ile sınırlamak için, bir deseni son argüman olarak iletebilirsiniz (bir bayrak değil).
Örneğin, bu komut raportörünüzü spesifikasyona ayarlar, ancak yalnızca js dosyalarını sunucu-test dizininin hemen içinde test eder:
mocha --reporter spec server-test/*.js
Bu komut yukarıdakiyle aynı şekilde çalışır, ayrıca yalnızca bir testin it () dizesi / tanımının "Fnord:" ile başladığı test senaryolarını çalıştırır:
mocha --reporter spec --grep "Fnord:" server-test/*.js
Eğer içinde node.js , itibariyle bazı yeni yapılandırmalar Mocha v6 :
Seçenek 1: .mocharc.json
Projenin kök dizininde oluşturun:
{
"spec": "path/to/test/files"
}
2.Seçenek: mocha
Projelerin özelliklerini ekleyin package.json
:
{
...
"mocha": {
"spec": "path/to/test/files"
}
}
Daha fazla seçenek burada .
Eşleşen test_directory
alt dizinler dahil olmak üzere tüm dosyaları çalıştırtest.js
find ./parent_test_directory -name '*test.js' | xargs mocha -R spec
veya --recursive
anahtarı kullanın
mocha --recursive test_directory/
Şimdi bir gün (2020 yılı) bunu mocha yapılandırma dosyasını kullanarak halledebilirsiniz :
Adım 1: Uygulamanızın kök konumunda .mocharc.js dosyası oluşturun
Adım 2: Mocha config dosyasına aşağıdaki kodu ekleyin :
'use strict';
module.exports = {
spec: 'src/app/**/*.test.js'
};
Yapılandırma dosyasında Daha fazla seçenek için şu bağlantıya bakın: https://github.com/mochajs/mocha/blob/master/example/config/.mocharc.js
Windows 7'de node.js v0.10.0 ve mocha v1.8.2 ve npm v1.2.14 kullanıyorum. Sadece testlerimi bulmak için yol testini / birimini kullanmak için mocha almaya çalışıyordum, Uzun süre geçirdikten ve indiğim birkaç şeyi denedikten sonra,
"Test / unit / *. Js" seçeneğinin kullanılması pencerelerde çalışmaz. Windows kabuğunun unixen gibi joker karakterleri genişletmemesinin iyi nedenlerinden dolayı.
Ancak "test / birim" kullanımı dosya deseni olmadan çalışır. Örneğin. "mocha test / unit", test / birim klasöründe bulunan tüm dosyaları çalıştırır.
Bu, yalnızca bir klasör dosyasını sınama olarak çalıştırır ancak birden çok dizin adını parametre olarak iletebilirsiniz.
Ayrıca tek bir test dosyası çalıştırmak için tam yolu ve dosya adını belirleyebilirsiniz. Örneğin. "Mocha testi / birimi / mytest1.js"
Aslında npm "komut dosyaları" için package.json içinde kurulum yaptım: {"test": "mocha test / unit"},
Böylece 'npm testi' birim testlerimi çalıştırıyor.
--recursive
seçenek aşağıdaki gibi kullanılabilir :mocha --recursive "some_dir"
node_modules\.bin\mocha "test\unit\*.js"
Windows üzerinde çalışmalarını. Ayrıca node_modules\.bin\mocha "**\*.js"
çalışır (benim gerçek durumum). Ama node_modules dizinini hariç tutmak için bir yol arıyorum . (Ben de gulpfile.js kullanıyorum ama bazen doğrudan mocha ile test başlatmam gerekiyor)
Kullanıyorsanız nodejs
, package.json
altındascripts
global (-g)
tesisler: "test": "mocha server-test"
ya"test": "mocha server-test/**/*.js"
alt belgeler içinproject
tesisler: "test": "node_modules/mocha/bin/mocha server-test"
ya "test": "node_modules/mocha/bin/mocha server-test/**/*.js"
alt belgeler içinSonra testlerinizi normal şekilde yapın npm test
npm run mocha "./test/*.spec.js!(~)"
glob iddiası göz ardı ediliyor ama node_modules/.bin/mocha "./test/*.spec.js!(~)"
değil.
npm run mocha -- yourArgs
@ Jeff-dickey'nin önerdiği gibi, projenizin kökünde adlı bir klasör oluşturun test
. Bu klasörde adlı bir dosya oluşturun mocha.opts
. Şimdi Jeff'in cevabını geliştirmeye çalıştığım yerde, benim için işe yarayan tek bir test klasörünün adını belirtmek yerine, bu satırı ekleyerek projemde çalışacak tüm testleri bulmak için bir model belirledim:
*/tests/*.js --recursive
içinde mocha.opts
Bunun yerine testleri aramak için tam klasörleri belirtmek isterseniz, böyle bir şey yaptım:
shared/tests/*.js --recursive
server/tests/graph/*.js --recursive
Umarım bu, diğer cevapların sağladığından daha fazlasına ihtiyaç duyan herkese yardımcı olur
.only
ve.skip
koşuyor. Tüm test paketinin her zaman çalışmasını beklemek istemediğinizde belirli bir özelliğin geliştirilmesi sırasında önemlidir.