ฉันกำลังเขียนกรอบการทดสอบทุบตีซึ่งในฟังก์ชันการทดสอบสามารถใช้ทั้งการทดสอบทุบตีมาตรฐาน ( [[
) และตัวจับคู่ที่กำหนดไว้ล่วงหน้าได้ Matchers เป็นตัวห่อเป็น "[[" และนอกเหนือจากการส่งคืนรหัสส่งคืนแล้วให้ตั้งค่าข้อความที่มีความหมายเพื่อบอกสิ่งที่คาด
ตัวอย่าง:
string_equals() {
if [[ ! $1 = $2 ]]; then
error_message="Expected '$1' to be '$2'."
return 1
fi
}
ดังนั้นเมื่อใช้ตัวจับคู่และล้มเหลวระบบจะตั้งค่า error_message เท่านั้น
ในเวลาต่อมาฉันทดสอบว่าการทดสอบสำเร็จหรือไม่ หากสำเร็จฉันจะพิมพ์ความคาดหวังเป็นสีเขียวหากล้มเหลวเป็นสีแดง
นอกจากนี้อาจมีชุด error_message ดังนั้นฉันจึงทดสอบว่ามีข้อความอยู่หรือไม่พิมพ์แล้วจึงยกเลิกการตั้งค่า (เนื่องจากการทดสอบต่อไปนี้อาจไม่ได้ตั้งค่า a error_message
):
if [[ $error_message ]]; then
printf '%s\n' "$error_message"
unset -v error_message
fi
ตอนนี้คำถามของฉันคือถ้าจะดีกว่าที่จะยกเลิกการตั้งค่าตัวแปรหรือตั้งค่าเป็น '' เช่น
error_message=''
อันไหนดีกว่า? มันสร้างความแตกต่างได้จริงหรือ? หรือฉันควรตั้งค่าสถานะเพิ่มเติมเพื่อระบุว่ามีการตั้งค่าข้อความ
error_message
กับสิ่งอื่นฉันว่ามันไม่สำคัญ อย่างไรก็ตามฉันคิดว่าคุณต้องการ[[ $error_message ]]
ไม่เช่นนั้นคุณกำลังทดสอบว่ามีสตริงตัวอักษร "error_message" อยู่