Saya menulis perpustakaan kecil untuk meningkatkan pengujian aplikasi web saya dan sekarang ingin mengabstraksikannya menjadi proyek sumber terbuka yang terpisah. Perpustakaan cukup umum sehingga akan berguna tidak hanya untuk saya sendiri di proyek lain tetapi juga untuk orang lain.

Satu-satunya masalah adalah ia mengimplementasikan satu set pencocokan khusus dan beberapa logika khusus lelucon (ini dilakukan sebagai kenyamanan untuk membuat kode pengujian yang sebenarnya tidak terlalu bertele-tele). Menerapkan logika yang setara untuk kerangka kerja pengujian lainnya harus langsung, tetapi saya berjuang untuk memahami bagaimana mengidentifikasi kerangka pengujian mana yang berjalan secara konsisten (untuk memilih logika pernyataan yang benar).

Saya tahu lelucon menetapkan variabel lingkungan tertentu (Cara menentukan apakah JEST menjalankan kode atau tidak?), tetapi berdasarkan jawaban variabel khusus lelucon tidak disetel secara konsisten dan NODE_ENV akan disetel ke nilai test yang sama oleh semua kerangka uji. Apa pendekatan terbersih untuk mendeteksi kerangka pengujian mana yang menjalankan pengujian? Terima kasih

0
Alexander Tsepkov 28 Oktober 2019, 17:12

2 jawaban

Jawaban Terbaik

Setelah melihat semua variabel lingkungan, melihat mana yang konsisten dan mana yang tidak, berikut adalah fungsi yang saya kumpulkan untuk menentukan peluncur/kerangka kerja:

const path = require('path');
function detectFramework() {
  const launcher = process.env._;
  return path.basename(launcher);
}

Ini akan berfungsi terlepas dari bagaimana Anda memberi nama skrip peluncuran Anda di package.json. Semoga orang lain menemukan ini berguna juga.

0
Alexander Tsepkov 28 Oktober 2019, 15:35

Saya menggunakan konstanta process.env.JEST_WORKER_ID. Sesuatu seperti:

if(process.env.JEST_WORKER_ID) {
    //You are in test mode.
}
0
Pavot 27 Januari 2021, 17:02