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 bcd
yang berisi logs a
substring? 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.only
tidak akan bekerja sama dengan given
dari mocha-testdata . Dan mudah untuk menghapusnya nanti.
eslint-plugin-mocha
memiliki aturan no-exclusive-tests
yang 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 --grep
bisa sedikit cerewet (mungkin tergantung pada argumen lain). Kamu bisa:
Ubah package.json:
"test:mocha": "mocha --grep \"<DealsList />\" .",
Atau gunakan alternatif --bail
yang tampaknya kurang rewel
npm test -- --bail
--grep
bisa sedikit cerewet - coba letakkan tepat setelah mocha dalam entri skrip npm. Lain npm test -- --bail
berguna untuk membayar setelah tes gagal pertama
--grep
menyelamatkan 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/mocha
membingungkan 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.
-g
dan 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-only
pada CI / server build. .only
memiliki 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.only
untuk repo
Melihat ke https://mochajs.org/#usage kita dapat menggunakannya
tes mocha / myfile
akan bekerja. Anda dapat menghilangkan '.js' di bagian akhir.
--grep
hanya disaring dari@
tag.