2015-08-21 23 views
0

我被困在chefspec測試中,該測試步入我的lwrp下面並聲明它創建了一個目錄。chefspec測試中的new_resource任務

describe 'mw-tomcat::chefspec' do 

    let(:chef) do 
    ChefSpec::SoloRunner.new(step_into: ['mw_tomcat_tree']) do |node| 
     node.set['mw']['domain'] = domain 
     node.set['mw']['gemrepo'] = gemrepo 
    end 
    end 

    let(:chef_run) { chef.converge(described_recipe) } 

    it 'creates the catalina_base directory' do 
    expect(chef_run).to create_directory('/apps/bweb/apps/instance1') 
    end 

done 

測試工作,如果我去掉下面的線,但沒有試圖從new_resource.settings

action :create do 
    settings = new_resource.settings 
    catalina_base=settings['catalina_base'] 
    #catalina_base='/apps/bweb/apps/instance1' 

    directory "#{catalina_base}" do 
    mode 0755 
    owner settings['user'] 
    group settings['group'] 
    recursive true 
    action :create 
    end 

end 

是否有chefspec的方式在上述new_resource值傳遞的價值是什麼時候?

感謝您的任何幫助。

愛德華

*更新

它失敗,出現以下消息:

[2015-08-21T19:25:02+01:00] DEBUG: resources for generic directory resource enabled on node include: [Chef::Resource::Directory] 
[2015-08-21T19:25:02+01:00] DEBUG: resources that survived replacement include: [Chef::Resource::Directory] 
[2015-08-21T19:25:02+01:00] DEBUG: resources for generic directory resource enabled on node include: [Chef::Resource::Directory] 
[2015-08-21T19:25:02+01:00] DEBUG: resources that survived replacement include: [Chef::Resource::Directory] 
[2015-08-21T19:25:02+01:00] DEBUG: resources for generic directory resource enabled on node include: [Chef::Resource::Directory] 
[2015-08-21T19:25:02+01:00] DEBUG: resources that survived replacement include: [Chef::Resource::Directory] 
[2015-08-21T19:25:02+01:00] DEBUG: resources for generic directory resource enabled on node include: [Chef::Resource::Directory] 
[2015-08-21T19:25:02+01:00] DEBUG: resources that survived replacement include: [Chef::Resource::Directory] 
[2015-08-21T19:25:02+01:00] DEBUG: resources for generic link resource enabled on node include: [Chef::Resource::Link] 
[2015-08-21T19:25:02+01:00] DEBUG: resources that survived replacement include: [Chef::Resource::Link] 
[2015-08-21T19:25:02+01:00] DEBUG: resources for generic link resource enabled on node include: [Chef::Resource::Link] 
[2015-08-21T19:25:02+01:00] DEBUG: resources that survived replacement include: [Chef::Resource::Link] 
[2015-08-21T19:25:02+01:00] INFO: Processing directory[] action create (/home/we_edqui/mw-chef-repo/cookbooks/mw-tomcat/providers/tree.rb line 51) 
[2015-08-21T19:25:02+01:00] INFO: Processing directory[/bin] action create (/home/we_edqui/mw-chef-repo/cookbooks/mw-tomcat/providers/tree.rb line 77) 
[2015-08-21T19:25:02+01:00] INFO: Processing directory[/conf] action create (/home/we_edqui/mw-chef-repo/cookbooks/mw-tomcat/providers/tree.rb line 77) 
[2015-08-21T19:25:02+01:00] INFO: Processing directory[/lib] action create (/home/we_edqui/mw-chef-repo/cookbooks/mw-tomcat/providers/tree.rb line 77) 
[2015-08-21T19:25:02+01:00] INFO: Processing directory[/logs] action create (/home/we_edqui/mw-chef-repo/cookbooks/mw-tomcat/providers/tree.rb line 77) 
[2015-08-21T19:25:02+01:00] INFO: Processing directory[/temp] action create (/home/we_edqui/mw-chef-repo/cookbooks/mw-tomcat/providers/tree.rb line 77) 
[2015-08-21T19:25:02+01:00] INFO: Processing directory[/webapps] action create (/home/we_edqui/mw-chef-repo/cookbooks/mw-tomcat/providers/tree.rb line 77) 
[2015-08-21T19:25:02+01:00] INFO: Processing directory[/work] action create (/home/we_edqui/mw-chef-repo/cookbooks/mw-tomcat/providers/tree.rb line 77) 
[2015-08-21T19:25:02+01:00] INFO: Processing link[/lib/BESTFilter] action create (/home/we_edqui/mw-chef-repo/cookbooks/mw-tomcat/providers/tree.rb line 109) 
    creates the catalina_base directory (FAILED - 1) 

Failures: 

    1) mw-tomcat::chefspec creates the catalina_base directory 
    Failure/Error: expect(chef_run).to create_directory('/apps/bweb/apps/instance1') 
     expected "directory[/apps/bweb/apps/instance1]" with action :create to be in Chef run. Other directory resources: 

     directory[] 
     directory[/bin] 
     directory[/conf] 
     directory[/lib] 
     directory[/logs] 
     directory[/temp] 
     directory[/webapps] 
     directory[/work] 

    # ./spec/default_spec.rb:68:in `block (2 levels) in <top (required)>' 

Finished in 0.80061 seconds (files took 4.72 seconds to load) 
1 example, 1 failure 

Failed examples: 

rspec ./spec/default_spec.rb:67 # mw-tomcat::chefspec creates the catalina_base directory 

完整的輸出爲http://fpaste.org/257744/14401829/

+0

你能給我們比「失敗」更多嗎?錯誤是什麼,粘貼錯誤信息會更好。 –

+0

是的!我會更新這篇文章。 – Edward

回答

1

正如this相當詳細ChefSpec bug報告概述了什麼你正在嘗試做的可能是不可能的,因爲new_resource對象實際上是創建了dy在運行時更名。

如果您決定使其工作,那麼有一個pretty complex workaround,但是當前首選的方法是將您的LWRP轉換爲HWRP並使用標準RSpec方法來模擬輸入。

+0

謝謝@eherot。你的回答非常有幫助。通過閱讀鏈接並瞭解更多複雜性,我不確定我是否決定儘快實現這一目標,儘管它會很好。在我包裝這本食譜時,我想我會將chefspec測試向下遊移動,並且暫時離開LWRP測試。 – Edward