chefspec: В чем разница между сопоставителями предикатов и атрибутами?

Например, чтобы проверить, что каталог был создан с пользователем "nobody", я могу использовать любой из двух методов:

"Утверждать, что каталог был создан с использованием предикатов"

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

"Утверждать, что каталог был создан с атрибутами"

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

Существует третий метод, использующий регулярные выражения, но я не заинтересован в этом методе.

Как мне решить, какой метод использовать, чтобы утверждать, что каталог был создан и принадлежит правильному пользователю?

1 ответ

Решение

Разницы нет: 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) синтаксис гораздо более распространен, но это зависит от вас и вашего личного стиля.

Другие вопросы по тегам