【问题标题】:Writing chef rspec test using 'execute'使用“执行”编写厨师 rspec 测试
【发布时间】:2018-09-04 04:58:36
【问题描述】:

在我的 .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 的卷,但我在搜索任何有效的东西时空手而归。

【问题讨论】:

  • 请将错误消息的文本作为文本发布,而不是作为文本照片发布。这是一个编程网站,而不是摄影网站。我们想阅读、复制和粘贴错误,而不是批评它对颜色和透视的使用。 (尽管如果我可以提出批评:黑底红字在我的屏幕上完全不可读。)
  • 会的。第一次在网站上发帖,所以我正在学习它是如何工作的。我会整理文字
  • 已添加错误消息文本。

标签: ruby ubuntu rspec chef-infra chefspec


【解决方案1】:

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

【讨论】:

    最近更新 更多