Mocha mencoba mencari file uji di bawah test
secara default, bagaimana cara menentukan dir lain, misalnya server-test
?
unit-testing
node.js
mocha
Freewind
sumber
sumber
.only
dan.skip
mengelola tes yang Anda gunakan berlari. Penting selama pengembangan fitur tertentu ketika Anda tidak ingin menunggu seluruh rangkaian uji dijalankan sepanjang waktu.Jawaban:
Sunting: Opsi ini sudah usang: https://mochajs.org/#mochaopts
Jika Anda ingin melakukannya dengan tetap berjalan
mocha
di command line, tetapi ingin menjalankan tes di folder./server-tests
alih-alih./test
, buat file./test/mocha.opts
dengan hanya ini di file:Jika Anda ingin menjalankan semua yang ada di folder dan subdirektori itu, masukkan ini ke dalam
test/mocha.opts
mocha.opts
adalah argumen yang diteruskan melalui baris perintah, jadi membuat baris pertama hanya direktori yang ingin Anda ubah tesnya juga akan dialihkan dari./test/
sumber
mocha.opts
file dapat ditempatkan di mana pun Anda inginkan, dan kemudian jalankan eksekusi denganmocha
menentukan path ke filemocha --opts ./mocha.opts
Gunakan ini:
Atau jika Anda memiliki subdirektori, gunakan ini:
Perhatikan penggunaan tanda kutip ganda. Jika Anda menghilangkannya, Anda mungkin tidak dapat menjalankan tes di subdirektori.
sumber
mocha test/server-test
mocha ./**/*.test.js
(jadi saya bisa menempatkan file uji dengan file modul). Pola berhenti bekerja untuk saya ketika saya menambahkan file uji pada tingkat yang berbeda dalam hierarki file daripada sisa tes, dan hanya akan menemukan bahwa satu file bola ganjil dan bukan selusin lainnya yang hidup pada tingkat yang sama dalam hierarki . Membungkus tanda kutip memperbaikinya.--recursive
seperti yang saya jelaskan di bawah iniIni salah satu caranya, jika Anda memiliki subfolder di folder pengujian Anda, mis
Kemudian di linux Anda dapat menggunakan perintah find untuk mendaftar semua file * .js secara rekursif dan meneruskannya ke moka:
sumber
--recursive
seperti yang saya jelaskan di bawah inimocha
tidak memiliki opsi untuk mengatur struktur direktori yang diinginkan dalam konfigurasi?Cara yang bagus untuk melakukan ini adalah menambahkan skrip npm "test" di package.json yang memanggil mocha dengan argumen yang benar. Dengan cara ini package.json Anda juga menjelaskan struktur pengujian Anda. Itu juga menghindari semua masalah lintas platform ini di jawaban lain (kutip ganda vs tunggal, "temukan", dll.)
Agar mocha menjalankan semua file js di direktori "test":
Maka untuk menjalankan hanya panggilan tes asap:
Anda dapat membakukan jalannya semua tes di semua proyek dengan cara ini, jadi ketika pengembang baru memulai proyek Anda atau yang lain, mereka tahu "uji npm" akan menjalankan tes. Ada presedensi historis yang baik untuk ini (Maven, misalnya, sebagian besar sekolah tua "membuat" proyek juga). Itu pasti membantu CI ketika semua proyek memiliki perintah pengujian yang sama.
Demikian pula, Anda mungkin memiliki subset tes "asap" yang lebih cepat yang mungkin ingin Anda jalankan:
Maka untuk menjalankan hanya panggilan tes asap:
Pola umum lainnya adalah menempatkan tes Anda di direktori yang sama dengan sumber yang mereka uji, tetapi panggil file tes * .spec.js. Sebagai contoh: src / foo / foo.js diuji oleh src / foo / foo.spec.js.
Untuk menjalankan semua tes bernama * .spec.js dengan konvensi:
Kemudian untuk menjalankan semua tes panggilan:
Lihat polanya di sini? Baik. :) Konsistensi mengalahkan mura .
sumber
Jangan gunakan opsi -g atau --grep, pola itu beroperasi atas nama tes di dalamnya (), bukan pada sistem file. Dokumentasi saat ini menyesatkan dan / atau salah mengenai hal ini. Untuk membatasi seluruh perintah ke bagian dari sistem file, Anda bisa meneruskan sebuah pola sebagai argumen terakhir (ini bukan flag).
Sebagai contoh, perintah ini akan mengatur reporter Anda untuk spec tetapi hanya akan menguji file js segera di dalam direktori server-test:
Perintah ini akan melakukan hal yang sama seperti di atas, ditambah lagi hanya akan menjalankan kasus uji di mana string () / definisi tes dimulai dengan "Fnord:":
sumber
Jika di node.js , beberapa konfigurasi baru seperti Mocha v6 :
Opsi 1: Buat
.mocharc.json
di direktori root proyek:Opsi 2: tambahkan
mocha
properti di proyekpackage.json
:Opsi lainnya ada di sini .
sumber
Jalankan semua file
test_directory
termasuk sub direktori yang cocoktest.js
atau gunakan
--recursive
sakelarsumber
Saya punya masalah ini sekarang dan menyelesaikannya dengan menghapus
--recursive
opsi (yang telah saya atur) dan menggunakan struktur yang sama seperti yang disarankan di atas:mochify "test/unit/**/*.js"
Ini menjalankan semua tes di semua direktori di bawah
/test/unit/
untuk saya sambil mengabaikan direktori lain di dalamnya/test/
sumber
Sekarang suatu hari (tahun 2020) Anda dapat menangani ini menggunakan file konfigurasi moka :
Langkah 1: Buat file .mocharc.js di lokasi root aplikasi Anda
Langkah 2: Tambahkan kode di bawah ini dalam file konfigurasi mocha:
Untuk opsi Lebih lanjut dalam file konfigurasi lihat tautan ini: https://github.com/mochajs/mocha/blob/master/example/config/.mocharc.js
sumber
Saya di Windows 7 menggunakan node.js v0.10.0 dan mocha v1.8.2 dan npm v1.2.14. Saya hanya mencoba untuk mendapatkan moka menggunakan jalur tes / unit untuk menemukan tes saya, Setelah menghabiskan waktu lama dan mencoba beberapa hal yang saya mendarat,
Menggunakan opsi "test / unit / *. Js" tidak berfungsi di windows. Untuk alasan yang baik bahwa shell windows tidak memperluas wildcard seperti unixen.
Namun menggunakan "test / unit" tidak berfungsi, tanpa pola file. misalnya. "mocha test / unit" menjalankan semua file yang ditemukan di folder test / unit.
Ini hanya masih menjalankan satu file folder sebagai tes tetapi Anda dapat melewati beberapa nama direktori sebagai parameter.
Juga untuk menjalankan file uji tunggal, Anda dapat menentukan path lengkap dan nama file. misalnya. "Tes mocha / unit / mytest1.js"
Saya sebenarnya setup di package.json untuk npm "scripts": {"test": "mocha test / unit"},
Jadi 'tes npm' menjalankan tes unit saya.
sumber
--recursive
opsi seperti berikut:mocha --recursive "some_dir"
node_modules\.bin\mocha "test\unit\*.js"
karya pada Windows. Juganode_modules\.bin\mocha "**\*.js"
berfungsi (kasus saya yang sebenarnya). Tapi saya sedang mencari cara untuk mengecualikan direktori node_modules . (Saya menggunakan gulpfile.js juga, tetapi kadang-kadang saya perlu meluncurkan tes langsung dengan moka)Jika Anda menggunakan
nodejs
, dipackage.json
bawah Andascripts
global (-g)
instalasi:"test": "mocha server-test"
atau"test": "mocha server-test/**/*.js"
untuk sub dokumenproject
instalasi:"test": "node_modules/mocha/bin/mocha server-test"
atau"test": "node_modules/mocha/bin/mocha server-test/**/*.js"
untuk sub dokumenKemudian jalankan tes Anda seperti biasa
npm test
sumber
npm run mocha "./test/*.spec.js!(~)"
mengabaikan argumen glob, tetapinode_modules/.bin/mocha "./test/*.spec.js!(~)"
tidak.npm run mocha -- yourArgs
Seperti yang disebutkan oleh @superjos dalam penggunaan komentar
mocha --recursive "some_dir"
sumber
Tampaknya ini bukan dukungan "mudah" untuk mengubah direktori pengujian.
Namun, mungkin Anda harus melihat masalah ini , relatif terhadap pertanyaan Anda.
sumber
Seperti yang disarankan @ jeff-dickey, di root proyek Anda, buat folder bernama
test
. Di folder itu, buat file bernamamocha.opts
. Sekarang ketika saya mencoba untuk memperbaiki jawaban Jeff, apa yang berhasil bagi saya alih-alih menentukan nama hanya satu folder tes, saya menentukan pola untuk menemukan semua tes untuk dijalankan dalam proyek saya dengan menambahkan baris ini:*/tests/*.js --recursive
dimocha.opts
Jika Anda ingin menentukan folder yang tepat untuk mencari tes, saya melakukan sesuatu seperti ini:
Saya harap ini membantu siapa saja yang membutuhkan lebih dari apa yang diberikan jawaban lain
sumber