使用'execute'编写Chef RSpec测试

时间:2018-09-04 04:58:36

标签: ruby ubuntu rspec chef chefspec

在我的.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 :(得分:0)

您无需在规范中使用节点属性,测试的重点是手动扩展它以确保您的代码可以正常工作。