0

我试图为我的 remote_file 资源之一编写 rspec。但我没有成功。
我的概念是使用 remote_file 它应该下载一个远程文件,它是一个 zip 文件。发生的事情是 rspec 在远程下载后期待更多。

这是我的资源声明:

remote_file zip_file_location do
  source http://google.com
  mode '0754'
  action :create
end​

这是我的 rspec 测试:

it 'creates a remote_file ' do
    expect(chef_run).to create_remote_file(::File.join(Chef::Config[:file_cache_path], 'sonarqube-5.6.6.zip'))
end
4

2 回答 2

0

这是你的资源

remote_file 'sonarqube-5.6.6.zip' do
 source 'http://google.com/'
 action :create
 mode 00755
end

这是您资源的 rspec

it 'creates a remote_file ' do
  expect(chef_run).to create_remote_file('sonarqube-5.6.6.zip').with(
      source: "http://google.com",
      mode: 00755
  )
end

如果您想从 attributes/default.rb 获得配置值作为保存文件的位置,您必须在 rspec 文件中模拟它:

describe 'lecturio_ds::webfrontend' do
  context 'When all attributes are default, on an unspecified platform'  do
  let(:chef_run) do
    ChefSpec::SoloRunner.new do |node|
      node.set['file_cache_path'] = '/tmp'
    end.converge(described_recipe)
  end
# place for your spec
end

然后你可以验证它create_remote_file('/tmp/sonarqube-5.6.6.zip')

我不明白你为什么在你的 rspec 文件File.join中使用。

于 2017-03-29T21:45:42.043 回答
0

出于几个原因,这对我有用,我通过提供远程文件的路径来修改我的代码,这有助于我解决 rspec 以准确地期望 zip 文件位置

这帮助我解决了 rspec

remote_file 'Download zip file'do
Path zip_file_location   
source http://google.com
mode '0754'
action :create
end​


it 'creates a remote_file ' do
expect(chef_run).to create_remote_file('Download remote file')
end

于 2017-03-31T15:43:23.623 回答