Şef - Yemek Kitaplarını Test Etmek
Yemek kitabının doğrudan dağıtılması ve üretim sunucusunda çalıştırılması durumunda, yemek kitabının üretimde parçalanma ihtimali yüksektir. Bunun olmasını önlemenin en iyi yolu, yemek kitabını kurulum ortamında test etmektir.
Aşağıda test etme adımları verilmiştir.
Step 1 - Aşağıdaki komutu kullanarak yemek kitabını kurun.
vipin@laptop:~/chef-repo $ knife cookbook site install <cookbook name>
Step 2 - Çalışan yemek kitabında bıçak yemek kitabı test komutlarını çalıştırın.
vipin@laptop:~/chef-repo $ knife cookbook test VTest
checking ntp
Running syntax check on ntp
Validating ruby files
Validating templates
Step 3 - Yemek kitabındaki bir şeyi kırın ve tekrar test edin.
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 - Bıçak testi komutunu tekrar çalıştırın.
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:
Çalışma yöntemi
Knife yemek kitabı testi, yemek kitabındaki tüm Ruby dosyalarının yanı sıra tüm ERB şablonlarında bir Ruby sözdizimi denetimi gerçekleştirir. Ruby dosyalarında döngü oluşturur ve Ruby'yi çalıştırır–cher birine karşı. Yakut–c betiğin sözdizimini kontrol eder ve çalıştırmadan çıkar.
Tüm Ruby dosyalarının üzerinden geçtikten sonra, bıçak yemek kitabı testi tüm ERB şablonlarından ve borularından geçer. –x Ruby aracılığıyla –c.
Sınırlamalar
Bıçak yemek kitabı testi, Ruby dosyaları ve ERB şablonlarında yalnızca basit bir sözdizimi kontrolü yapar. ChefSpec ve test mutfağı kullanarak tamamen test sürüşüne devam edebiliriz.