2017-07-13 139 views
0

例如,要檢查一個目錄已與用戶創建「沒人」,我可以使用兩種methodschefspec:謂詞匹配器和屬性之間有什麼區別?

斷言目錄與謂詞createed匹配器

expect(chef_run).to create_directory('/tmp').with_user('nobody') 

斷言目錄與屬性 createed」

expect(chef_run).to create_directory('/tmp').with(user: 'nobody') 

還有第三個方法使用正則表達式,但我不關心那種方法。

如何決定使用哪種方法來聲明該目錄是由正確的用戶創建的?

回答

0

沒有區別:https://github.com/chefspec/chefspec/blob/master/lib/chefspec/matchers/resource_matcher.rb#L32-L34

def method_missing(m, *args, &block) 
     if m.to_s =~ /^with_(.+)$/ 
     with($1.to_sym => args.first) 
     self 
     else 
     super 
     end 
    end 

with(user: whatever)語法是目前比較常見的,但它是由你和你的個人風格。

+0

謝謝,我欣賞鏈接。儘管這應該記錄下來,但人們會認爲。我只是假設如果結果或副作用沒有任何差異,則沒有人會通過創建額外的語法變體的努力。 – user3481957

+0

我的意思是說,ChefSpec和RSpec所做的99%是用於任務的語法糖,你可以通過其他方式做到這一點......是的,人們做了很多。 – coderanger

相關問題