JavaScript şeylerimi test etmek için Mocha kullanıyorum. Test dosyam 5 test içeriyor. Dosyadaki tüm testlerden ziyade belirli bir test (veya test seti) çalıştırmak mümkün müdür?
JavaScript şeylerimi test etmek için Mocha kullanıyorum. Test dosyam 5 test içeriyor. Dosyadaki tüm testlerden ziyade belirli bir test (veya test seti) çalıştırmak mümkün müdür?
Yanıtlar:
Mocha --grepseçeneğini kullanmayı deneyin :
-g, --grep <pattern> only run tests matching <pattern>
Geçerli herhangi bir JavaScript normal ifadesini olarak kullanabilirsiniz <pattern>. Örneğin, eğer test/mytest.js:
it('logs a', function(done) {
console.log('a');
done();
});
it('logs b', function(done) {
console.log('b');
done();
});
Sonra:
$ mocha -g 'logs a'
Tek bir test yapmak için. Bunun herkesin describe(name, fn)ve it(name, fn)çağrışımların adlarına hitap ettiğini unutmayın .
describe()Belirli kümeleri bulmayı ve seçmeyi kolaylaştırmak için ad aralığı için iç içe çağrılar kullanmayı düşünün .
mocha some/test.js) komut satırında dosya belirtmek işe yaramadı. Teşekkürler!
logs a bcdiçeren hangi çalıştırmak da önlemek için herhangi bir yolu var logs amı? Normal ifade ^$0.10.2 üzerinde çalışmıyor.
Kullanım şeklinize bağlı olarak, yalnızca kullanmak isteyebilirsiniz . TDD stilini kullanıyoruz; şuna benzer:
test.only('Date part of valid Partition Key', function (done) {
//...
}
Tüm dosyalardan / süitlerden yalnızca bu test çalıştırılacaktır.
it.only.
eslint-plugin-mochano-exclusive-testskaldırmayı unutursanız sizi yakalayacak bir kuralı vardır .only.
Eğer kullanıyorsanız npm test(package.json komut dosyalarını kullanarak) ekstra kullanmak --mocha kadar param geçmesine
Örneğin npm test -- --grep "my second test"
EDIT : Görünüşe göre --grepbiraz telaşlı olabilir (muhtemelen diğer argümanlara bağlı olarak). Yapabilirsin:
Paketi değiştirin. Json:
"test:mocha": "mocha --grep \"<DealsList />\" .",
Ya da alternatif --bailolarak daha az telaşlı görünen kullanım
npm test -- --bail
--grep biraz telaşlı olabilir - Mocha'dan hemen sonra npm komut dosyası girdisine koymayı deneyin. Else npm test -- --bail, ilk başarısız testten sonra balyalama için kullanışlıdır
--grepgünümü kurtarmadan önce ekstra çizgiler geçiyor ! Çok teşekkürler. PS. Windows'dayım, koşuyorumnpm test -- --grep @tag
Aslında, glob desenini (örneğin ) mocha.opts dosyasından kaldırırsanız, sırasıyla bir kopya oluşturursanız, dosya adına göre tek bir mocha testi de yapılabilir (sadece „it () - string-grepping“ ile değil) ./test/**/*.spec.js:
node_modules/.bin/mocha --opts test/mocha.single.opts test/self-test.spec.js
İşte benim mocha.single.opts (sadece yukarıda belirtilen glob hattını kaçırmak farklıdır)
--require ./test/common.js
--compilers js:babel-core/register
--reporter list
--recursive
Arka plan: opts-File'dan (ile başlayan --) çeşitli anahtarları geçersiz kılabilirsiniz ancak glob'u geçersiz kılamazsınız . Bu bağlantının bazı açıklamaları da var.
İpucu: eğer node_modules/.bin/mochakarıştırır Eğer yerel paket mocha kullanmaya. Ayrıca mocha, global olarak yüklediyseniz de yazabilirsiniz .
Ve şu konforları istiyorsanız package.json: Yine de: **/*-ish glob'u kendinizden çıkarın, mocha.optsburaya yerleştirin, tüm testler için, tek test için onları bırakın:
"test": "mocha ./test/**/*.spec.js",
"test-watch": "mocha -R list -w ./test/**/*.spec.js",
"test-single": "mocha $1",
"test-single-watch": "mocha -R list -w $1",
kullanımı:
> npm run test
sırasıyla
> npm run test-single -- test/ES6.self-test.spec.js
(dikkat --!)
Warning: Could not find any test files matching pattern: $1
Merhaba yukarıdaki çözümler benim için işe yaramadı. Tek bir test yapmanın diğer yolu
mocha test/cartcheckout/checkout.js -g 'Test Name Goes here'
Bu, bir test vakasını tek bir dosyadan ve belirli bir adla çalıştırmaya yardımcı olur.
-gve bir dosya adı belirtmeniz gerekmez. Yeterince seçici bir ifade yazamıyorsanız, testlerinizi doğru şekilde adlandırmıyorsunuz demektir.
npm test <filepath>
Örneğin :
npm test test/api/controllers/test.js
burada 'test / api / controllers / test.js' dosyayoludur.
"İt.only" yi deneyebilirsiniz
it.only('Test one ', () => {
expect(x).to.equal(y);
});
it('Test two ', () => {
expect(x).to.equal(y);
});
bunda sadece birincisi
--forbid-onlyCI / build sunucusunda yapılmazsa tehlikelidir . .onlyana dalın içine girme ve diğer testleri artık yürütmeyecekleri için sessiz hale getirme eğilimi vardır. Ben bir anti-özellik farklı testler çalıştırmak için kod değiştirme iş akışını düşünmeye geldi. Test koşucusu, geliştiricinin değil hangi testlerin yapılması gerektiğini (etiketli testler olarak da bilinmelidir) belirlemelidir.
it.onlyrepo ile kodlama yapma
İçine bakıyor https://mochajs.org/#usage biz sadece kullanım görmek
mocha testi / dosyam
çalışacak. Sonunda '.js'i atlayabilirsiniz.
--grepSadece@etiketlerden süzülen izlenimin altındaydım .