พ่อครัว - ตำราการทดสอบ
ในกรณีที่มีการปรับใช้และเรียกใช้ตำราอาหารโดยตรงบนเซิร์ฟเวอร์การผลิตมีโอกาสสูงที่ตำราอาหารจะแตกออกในระหว่างการผลิต วิธีที่ดีที่สุดในการป้องกันไม่ให้สิ่งนี้เกิดขึ้นคือการทดสอบตำราอาหารในสภาพแวดล้อมการตั้งค่า
ต่อไปนี้เป็นขั้นตอนสำหรับการทดสอบ
Step 1 - ติดตั้งตำราอาหารโดยใช้คำสั่งต่อไปนี้
vipin@laptop:~/chef-repo $ knife cookbook site install <cookbook name>
Step 2 - เรียกใช้คำสั่งทดสอบมีดในตำราอาหารที่ใช้งานได้
vipin@laptop:~/chef-repo $ knife cookbook test VTest
checking ntp
Running syntax check on ntp
Validating ruby files
Validating templates
Step 3 - ทำลายบางสิ่งในตำราอาหารแล้วทดสอบอีกครั้ง
vipin@laptop:~/chef-repo $ subl cookbooks/VTest/recipes/default.rb
...
[ node['ntp']['varlibdir']
node['ntp']['statsdir'] ].each do |ntpdir|
directory ntpdir do
owner node['ntp']['var_owner']
group node['ntp']['var_group']
mode 0755
end
end
Step 4 - รันคำสั่งทดสอบมีดอีกครั้ง
vipin@laptop:~/chef-repo $ knife cookbook test ntp
checking ntp
Running syntax check on ntp
Validating ruby files
FATAL: Cookbook file recipes/default.rb has a ruby syntax error:
FATAL: cookbooks/ntp/recipes/default.rb:25: syntax error,
unexpected tIDENTIFIER, expecting ']'
FATAL: node['ntp']['statsdir'] ].each do |ntpdir|
FATAL: ^
FATAL: cookbooks/ntp/recipes/default.rb:25: syntax error,
unexpected ']', expecting $end
FATAL: node['ntp']['statsdir'] ].each do |ntpdir|
FATAL:
วิธีการทำงาน
การทดสอบ Knife Cookbook จะดำเนินการตรวจสอบไวยากรณ์ Ruby ในไฟล์ Ruby ทั้งหมดภายในตำราอาหารรวมทั้งเทมเพลต ERB ทั้งหมด มันวนผ่านไฟล์ Ruby และเรียกใช้ Ruby–cกับแต่ละคน ทับทิม–c ตรวจสอบไวยากรณ์ของสคริปต์และออกโดยไม่ต้องเรียกใช้
หลังจากผ่านไฟล์ Ruby ทั้งหมดแล้วการทดสอบมีดทำอาหารจะต้องผ่านเทมเพลตและไปป์ ERB ทั้งหมดซึ่งเป็นเวอร์ชันที่ซ้ำซ้อนที่สร้างขึ้นโดย –x ผ่าน Ruby –c.
ข้อ จำกัด
การทดสอบมีดตำราทำเพียงการตรวจสอบไวยากรณ์อย่างง่ายในไฟล์ Ruby และเทมเพลต ERB เราสามารถดำเนินการทดสอบอย่างเต็มที่โดยใช้ ChefSpec และห้องครัวทดสอบ