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 --grep
seç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 bcd
içeren hangi çalıştırmak da önlemek için herhangi bir yolu var logs a
mı? 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-mocha
no-exclusive-tests
kaldı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 --grep
biraz 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 --bail
olarak 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
--grep
gü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/mocha
karış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.opts
buraya 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.
-g
ve 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-only
CI / build sunucusunda yapılmazsa tehlikelidir . .only
ana 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.only
repo 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.
--grep
Sadece@
etiketlerden süzülen izlenimin altındaydım .