chefspec:谓词匹配器和属性有什么区别?

时间:2017-07-13 19:56:26

标签: chef chefspec

例如,要检查是否已使用“nobody”用户创建了目录,我可以使用两个methods之一:

断言目录是使用谓词匹配器创建的

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

断言目录是使用属性创建的

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

使用正则表达式的第三种方法,但我不关心那种方法。

如何确定使用哪种方法来断言目录是否已创建且由正确的用户拥有?

1 个答案:

答案 0 :(得分: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)语法更为常见,但这取决于您和您的个人风格。