Saya mencoba untuk menggunakan linter ESLint dengan kerangka pengujian Jest.
Tes bercanda berjalan dengan beberapa global seperti jest
, yang saya harus memberitahu linter tentang; tetapi yang sulit adalah struktur direktori, dengan Jest tes tertanam dengan kode sumber dalam __tests__
folder, sehingga struktur direktori terlihat seperti:
src
foo
foo.js
__tests__
fooTest.js
bar
bar.js
__tests__
barTest.js
Biasanya, saya akan memiliki semua tes saya di bawah satu dir, dan saya bisa menambahkan .eslintrc
file di sana untuk menambahkan global ... tapi saya tentu tidak ingin menambahkan .eslintrc
file ke setiap __test__
dir tunggal .
Untuk saat ini, saya baru saja menambahkan tes global ke .eslintrc
file global , tetapi karena itu berarti saya sekarang dapat referensi jest
dalam kode non-pengujian, yang sepertinya bukan solusi "benar".
Apakah ada cara untuk membuat eslint menerapkan aturan berdasarkan beberapa pola berdasarkan nama direktori, atau sesuatu seperti itu?
sumber
eslint-test
file dengan glob, misalnyaeslint **/__tests__/*.js -c eslint-test.yml
. Yang mengatakan, saya tidak berpikir ada banyak bahayajest
ataubeforeEach
global bocor ke dalam kode produksi;)Jawaban:
Dokumen menunjukkan Anda sekarang dapat menambahkan:
Untuk Anda
.eslintrc
yang akan menambahkan semua hal terkait lelucon ke lingkungan Anda, menghilangkan kesalahan / peringatan linter.sumber
.eslintrc
file yang memperpanjang default Anda.eslintrc
di__tests__
folder Anda . Jika Anda memiliki masalah yang sama dengan OP (folder uji berganda), maka Anda dapat membuatnya.eslintrc
dengan templat dan skrip bash kecil (semacamnyals **/__tests/ | xargs cp templates/.eslintrc
)ESLint mendukung ini pada versi> = 4:
Berikut ini solusinya (dari jawaban lain di sini, pilih itu!) Untuk batasan "extended in override" dari eslint config:
Dari https://github.com/eslint/eslint/issues/8813#issuecomment-320448724
sumber
"files"
dan"env"
objek ke"overrides"
dalam,eslint.rc
saya tidak lagi perlu khawatir tentang sintaks spesifik Jest lewat linting di luar file pengujian.Anda juga dapat mengatur test env di file tes Anda sebagai berikut:
sumber
Untuk melengkapi jawaban Zachary, berikut adalah solusi untuk batasan "extended in override" dari konfigurasi eslint:
Dari https://github.com/eslint/eslint/issues/8813#issuecomment-320448724
sumber
Konfigurasi berbasis pola dijadwalkan untuk rilis ESLint 2.0.0. Untuk saat ini, Anda harus membuat dua tugas terpisah (seperti yang disebutkan dalam komentar). Satu untuk tes dan satu untuk sisa kode dan menjalankan keduanya, sambil memberikan file .eslintrc yang berbeda.
PS Ada lingkungan bercanda yang akan datang dalam rilis ESLint berikutnya, itu akan mendaftarkan semua global yang diperlukan.
sumber
Saya memecahkan masalah REF
Lari
Dan kemudian tambahkan
.eslintrc
file Andasumber
Tambahkan lingkungan hanya untuk
__tests__
folderAnda dapat menambahkan
.eslintrc.yml
file di__tests__
folder Anda , yang memperluas konfigurasi dasar Anda:Jika Anda hanya punya satu
__tests__
folder, solusi ini adalah yang terbaik karena ruang lingkup hanya bercanda di mana diperlukan.Berurusan dengan banyak folder uji
Jika Anda memiliki lebih banyak folder uji (case OPs), saya masih menyarankan untuk menambahkan file-file itu. Dan jika Anda memiliki banyak folder tersebut dapat menambahkannya dengan skrip zsh sederhana:
Script ini akan mencari
__tests__
folder dan menambahkan.eslintrc.yml
file dengan konfigurasi yang ditunjukkan di atas. Skrip ini harus diluncurkan dalam folder yang berisi orang tua Anda.eslintrc
.sumber
beberapa jawaban menganggap Anda telah menginstal 'eslint-plugin-jest', namun tanpa perlu melakukan itu, Anda dapat melakukannya di
.eslintrc
file Anda , tambahkan:sumber
Dalam file .eslintignore Anda, tambahkan nilai berikut:
Ini harus mengabaikan semua contoh direktori __tests__ dan anak-anak mereka.
sumber