Saya menggunakan Mocha untuk menguji hal-hal JavaScript saya. File pengujian saya berisi 5 tes. Apakah itu mungkin untuk menjalankan tes tertentu (atau serangkaian tes) daripada semua tes dalam file?
Saya menggunakan Mocha untuk menguji hal-hal JavaScript saya. File pengujian saya berisi 5 tes. Apakah itu mungkin untuk menjalankan tes tertentu (atau serangkaian tes) daripada semua tes dalam file?
Jawaban:
Coba gunakan opsi moka--grep :
-g, --grep <pattern> only run tests matching <pattern>
Anda dapat menggunakan regex JavaScript yang valid sebagai <pattern>. Misalnya, jika kita memiliki test/mytest.js:
it('logs a', function(done) {
console.log('a');
done();
});
it('logs b', function(done) {
console.log('b');
done();
});
Kemudian:
$ mocha -g 'logs a'
Untuk menjalankan tes tunggal. Perhatikan bahwa ini mencakup semua nama describe(name, fn)dan it(name, fn)doa.
Pertimbangkan untuk menggunakan describe()panggilan bersarang untuk namespacing agar mudah menemukan dan memilih set tertentu.
mocha some/test.js) tidak berfungsi sama sekali. Terima kasih!
logs a bcdyang berisi logs asubstring? Regexp ^$tidak berfungsi pada 0.10.2.
Tergantung pada pola penggunaan Anda, Anda mungkin hanya ingin menggunakan saja . Kami menggunakan gaya TDD; terlihat seperti ini:
test.only('Date part of valid Partition Key', function (done) {
//...
}
Hanya tes ini yang akan berjalan dari semua file / suite.
it.only.
it.onlytidak akan bekerja sama dengan givendari mocha-testdata . Dan mudah untuk menghapusnya nanti.
eslint-plugin-mochamemiliki aturan no-exclusive-testsyang akan menangkap Anda jika Anda lupa untuk menghapus .only.
Jika Anda menggunakan npm test(menggunakan skrip package.json) gunakan ekstra --untuk meneruskan param ke moka
misalnya npm test -- --grep "my second test"
EDIT : Sepertinya --grepbisa sedikit cerewet (mungkin tergantung pada argumen lain). Kamu bisa:
Ubah package.json:
"test:mocha": "mocha --grep \"<DealsList />\" .",
Atau gunakan alternatif --bailyang tampaknya kurang rewel
npm test -- --bail
--grep bisa sedikit cerewet - coba letakkan tepat setelah mocha dalam entri skrip npm. Lain npm test -- --bailberguna untuk membayar setelah tes gagal pertama
--grepmenyelamatkan hariku! Terima kasih banyak. PS. Saya menggunakan Windows, menjalankannpm test -- --grep @tag
Sebenarnya, seseorang juga dapat menjalankan tes mocha tunggal dengan nama file (bukan hanya dengan "it () - string-grepping") jika Anda menghapus pola glob (mis. ./test/**/*.spec.js) Dari mocha.opts Anda, masing-masing membuat salinan, tanpa:
node_modules/.bin/mocha --opts test/mocha.single.opts test/self-test.spec.js
Inilah mocha.single.opts saya (hanya berbeda dengan melewatkan garis gumpalan yang disebutkan di atas)
--require ./test/common.js
--compilers js:babel-core/register
--reporter list
--recursive
Latar Belakang: Meskipun Anda dapat mengganti berbagai sakelar dari File-opts (dimulai dengan --), Anda tidak dapat mengabaikan glob . Tautan itu juga memiliki beberapa penjelasan.
Petunjuk: jika node_modules/.bin/mochamembingungkan Anda, untuk menggunakan paket moka lokal. Anda juga dapat menulis adil mocha, jika Anda menginstalnya secara global.
Dan jika Anda menginginkan kenyamanan package.json: Masih: menghapus **/*gumpalan -ish dari Anda mocha.opts, masukkan di sini, untuk semua pengujian, tinggalkan mereka untuk pengujian tunggal:
"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",
pemakaian:
> npm run test
masing-masing
> npm run test-single -- test/ES6.self-test.spec.js
(pikirkan --!)
Warning: Could not find any test files matching pattern: $1
Hai solusi di atas tidak berhasil untuk saya. Cara lain menjalankan tes tunggal adalah
mocha test/cartcheckout/checkout.js -g 'Test Name Goes here'
Ini membantu menjalankan test case dari satu file dan dengan nama tertentu.
-gdan Anda tidak perlu menentukan nama file. Jika Anda tidak dapat menulis ekspresi yang cukup selektif, itu artinya Anda tidak memberi nama pengujian dengan benar.
npm test <filepath>
misalnya:
npm test test/api/controllers/test.js
di sini 'test / api / controllers / test.js' adalah filepath.
Anda dapat mencoba "hanya"
it.only('Test one ', () => {
expect(x).to.equal(y);
});
it('Test two ', () => {
expect(x).to.equal(y);
});
dalam hal ini yang pertama hanya akan dieksekusi
--forbid-onlypada CI / server build. .onlymemiliki kecenderungan untuk menyelinap ke cabang utama dan membuat tes lainnya bisu karena mereka tidak akan melakukan lagi. Saya jadi berpikir tentang alur kerja mengubah kode untuk menjalankan tes yang berbeda anti-fitur. Pelari uji harus menentukan tes mana yang harus dieksekusi (tes yang ditandai) bukan pengembang.
it.onlyuntuk repo
Melihat ke https://mochajs.org/#usage kita dapat menggunakannya
tes mocha / myfile
akan bekerja. Anda dapat menghilangkan '.js' di bagian akhir.
--grephanya disaring dari@tag.