Написание теста chef rspec с использованием «execute» - PullRequest
0 голосов
/ 04 сентября 2018

В моем файле .rb я пытаюсь написать тест спецификации для этой строки кода (я не писал этот код):

execute "lvcreate -L #{node['ami_base']['opt']} -n opt vgpool"

В моем файле _spec.rb мой тест выглядит следующим образом для этого конкретного раздела кода:

it 'executes lvcreate... -n opt vgpool' do
  expect(chef_run).to run_execute("lvcreate -L #{node['ami_base']['opt']} -n opt vgpool")
end

Когда я пытаюсь:

chef exec rspec....._spec.rb

Я получаю эту ошибку:

1) ami_base::lvm_drives executes lvcreate... -n opt vgpool
 Failure/Error: expect(chef_run).to run_execute("lvcreate -L #{node['ami_base']['opt']} -n opt vgpool")

 NameError:
   undefined local variable or method `node' for #<RSpec::ExampleGroups::AmiBaseLvmDrives:0x0000000005752268>
 # ./spec/unit/recipes/lvm_drives_spec.rb:33:in `block (2 levels) in <top (required)>'

Я написал много тестов против execute, и все они были успешными. Нужно ли изменять файл спецификации? Я чувствую, что это ввод командной строки и создание тома, что команда должна быть чем-то отличным от run_execute, но я подхожу с пустыми руками в поисках всего, что работает.

1 Ответ

0 голосов
/ 04 сентября 2018

Вы не используете атрибуты узла в своей спецификации подобным образом, цель теста состоит в том, чтобы вручную расширить его, чтобы убедиться, что ваш код работает.

...