Chefspec как выполнить юнит-тест для update_apt_update без обновления

У меня есть следующий код шеф-повара:

apt_update 'Ubuntu apt repo update' do
  subscribes :nothing, 'apt_repository[some-repo]', :immediately
end

Я пытаюсь проверить с этим кодом:

it 'updates apt repo' do
  expect(chef_run).to update_apt_update('Ubuntu apt repo update')
end

Который не с

ожидается "apt_update[Ubuntu apt repo update]" с действием: update для запуска Chef.

Другие ресурсы apt_update: apt_update[обновление репозитория Ubuntu apt]

Похоже, он пытается утверждать, что мое действие - обновление, как мне заставить его не принимать на себя мои действия?

1 ответ

В chefspec вы уже сказали ему ожидать обновления_apt_update, поэтому он ожидает действия обновления от ресурса. Таким образом, оно не предполагает ваших действий и не пытается что-либо утверждать. chefspec довольно прост в том смысле, что он пытается избежать того, чтобы люди делали то, что они не собираются делать.

В разделе рецептов добавьте действие, которое вы уже тестируете.

apt_update 'Ubuntu apt repo update' do
action :update
subscribes :nothing, 'apt_repository[some-repo]', :immediately
end

Я всегда иду к этим примерам chefspec от sethvargo, когда мне нужна помощь.

Примеры chefspec

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