Saat ini saya sedang menulis kerangka pengujian bash, di mana dalam fungsi pengujian, baik pengujian bash standar ( [[
) serta pencocokan yang telah ditentukan sebelumnya dapat digunakan. Pencocokan adalah pembungkus untuk '[[' dan selain mengembalikan kode kembali, setel beberapa pesan bermakna yang mengatakan apa yang diharapkan.
Contoh:
string_equals() {
if [[ ! $1 = $2 ]]; then
error_message="Expected '$1' to be '$2'."
return 1
fi
}
Jadi, saat matcher digunakan, dan gagal, baru error_message ditetapkan.
Sekarang, di beberapa titik kemudian, saya menguji apakah tes tersebut berhasil. Jika berhasil, saya cetak ekspektasi dengan warna hijau, jika gagal dengan warna merah.
Selain itu, mungkin ada kumpulan error_message, jadi saya menguji apakah ada pesan, mencetaknya, dan kemudian membatalkannya (karena pengujian berikut mungkin tidak menetapkan error_message
):
if [[ $error_message ]]; then
printf '%s\n' "$error_message"
unset -v error_message
fi
Sekarang pertanyaan saya adalah, apakah lebih baik untuk menghapus variabel, atau hanya mengaturnya ke '', seperti
error_message=''
Mana yang lebih baik? Apakah itu benar-benar membuat perbedaan? Atau mungkin saya harus memiliki bendera tambahan yang menunjukkan bahwa pesan tersebut telah disetel?
error_message
dengan hal lain, saya akan mengatakan itu tidak masalah. Namun, saya pikir Anda menginginkannya[[ $error_message ]]
, jika tidak Anda menguji bahwa string literal "error_message" ada.