Đầu bếp - ChefSpec

Test Driven Development (TDD)là một cách để viết bài kiểm tra đơn vị trước khi viết bất kỳ mã công thức thực tế nào. Bài kiểm tra phải là thật và phải xác thực những gì một công thức làm. Nó thực sự sẽ thất bại vì không có công thức nào được phát triển. Khi công thức được phát triển, bài kiểm tra sẽ vượt qua.

ChefSpec được xây dựng trên khung RSpec phổ biến và cung cấp một cú pháp phù hợp để kiểm tra công thức Chef.

Tạo ChefSpec

Step 1 - Tạo một tập tin đá quý có chứa đá quý ChefSpec.

vipin@laptop:~/chef-repo $ subl Gemfile 
source 'https://rubygems.org' 
gem 'chefspec'

Step 2 - Cài đặt đá quý.

vipin@laptop:~/chef-repo $ bundler install 
Fetching gem metadata from https://rubygems.org/ 
...TRUNCATED OUTPUT... 
Installing chefspec (1.3.1) 
Using bundler (1.3.5) 
Your bundle is complete!

Step 3 - Tạo một thư mục đặc tả.

vipin@laptop:~/chef-repo $ mkdir cookbooks/<Cookbook Name>/spec

Step 4 - Tạo một thông số kỹ thuật

vipin@laptop:~/chef-repo $ subl  
cookbooks/my_cookbook/spec/default_spec.rb  
require 'chefspec'  
describe 'my_cookbook::default' do  
   let(:chef_run) {  
      ChefSpec::ChefRunner.new(  
         platform:'ubuntu', version:'12.04'  
      ).converge(described_recipe)  
   }  

   it 'creates a greetings file, containing the platform  
   name' do  
      expect(chef_run).to  
      create_file_with_content('/tmp/greeting.txt','Hello! ubuntu!')  
   end  
end

Step 5 - Xác thực ChefSpec.

vipin@laptop:~/chef-repo $ rspec cookbooks/<Cookbook Name>/spec/default_spec.rb 
F 
Failures: 
1) <CookBook Name> ::default creates a greetings file, containing the platform name 
Failure/Error: expect(chef_run.converge(described_recipe)).to 
create_file_with_content('/tmp/greeting.txt','Hello! ubuntu!') 
File content: 
does not match expected: 
Hello! ubuntu! 
# ./cookbooks/my_cookbook/spec/default_spec.rb:11:in `block 
(2 levels) in <top (required)>' 
Finished in 0.11152 seconds 
1 example, 1 failure  

Failed examples: 
rspec ./cookbooks/my_cookbook/spec/default_spec.rb:10 # my_ 
cookbook::default creates a greetings file, containing the 
platform name

Step 6 - Chỉnh sửa công thức nấu ăn mặc định của Cookbooks.

vipin@laptop:~/chef-repo $ subl cookbooks/<Cookbook Name>/recipes/default.rb 
template '/tmp/greeting.txt' do 
   variables greeting: 'Hello!' 
end

Step 7 - Tạo một tệp mẫu.

vipin@laptop:~/chef-repo $ subl cookbooks/< Cookbook Name>/recipes/default.rb 
<%= @greeting %> <%= node['platform'] %>!

Step 8 - Chạy lại rspec.

vipin@laptop:~/chef-repo $ rspec cookbooks/<Cookbook Name>/spec/default_spec.rb 
. 
Finished in 0.10142 seconds 
1 example, 0 failures

Làm thế nào nó hoạt động

Để làm cho nó hoạt động, trước tiên chúng ta cần thiết lập cơ sở hạ tầng cơ sở để sử dụng RSpec với Chef. Sau đó, chúng ta cần đá quý ChefSpec Ruby và sách nấu ăn cần một thư mục có tên là spec, nơi tất cả các bài kiểm tra sẽ được lưu.