พ่อครัว - ตำราการทดสอบ

ในกรณีที่มีการปรับใช้และเรียกใช้ตำราอาหารโดยตรงบนเซิร์ฟเวอร์การผลิตมีโอกาสสูงที่ตำราอาหารจะแตกออกในระหว่างการผลิต วิธีที่ดีที่สุดในการป้องกันไม่ให้สิ่งนี้เกิดขึ้นคือการทดสอบตำราอาหารในสภาพแวดล้อมการตั้งค่า

ต่อไปนี้เป็นขั้นตอนสำหรับการทดสอบ

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 และห้องครัวทดสอบ