gpt4 book ai didi

rspec - 在chefspec中打开 stub 文件

转载 作者:行者123 更新时间:2023-12-04 22:46:24 27 4
gpt4 key购买 nike

嗨,正在使用chefspec进行测试,我发现以下错误。

/cookbook/wordpress/recipes/default.rb

wp_secrets = Chef::Config[:file_cache_path] + '/wp-secrets.php'

if File.exist?(wp_secrets)
salt_data = File.read(wp_secrets)
else
require 'open-uri'
salt_data = open('https://api.wordpress.org/secret-key/1.1/salt/').read
open(wp_secrets, 'wb') do |file|
file << salt_data
end
end

当我运行 ChefSpec 时,我得到:
1) wordpress::default on Centos 6.5 includes depends recipes
Failure/Error: end.converge('wordpress::default')
Errno::ENOENT:
No such file or directory @ rb_sysopen - /var/chef/cache/wp-secrets.php

# /tmp/d20140617-408-1rx47um/cookbooks/wordpress/recipes/default.rb:77:in `from_file'
# ./spec/centos/default_spec.rb:10:in `block (2 levels) in <top (required)>'
# ./spec/centos/default_spec.rb:20:in `block (2 levels) in <top (required)>'

当我在 default_spec.rb 中添加 stub 时
before do
File.stub(:exist?)
.with("#{Chef::Config[:file_cache_path]}/wp-secrets.php")
.and_return(true)
end

我收到此错误:
1) wordpress::default on Centos 6.5 includes depends recipes
Failure/Error: end.converge('wordpress::default')
<File (class)> received :exist? with unexpected arguments
expected: ("/var/chef/cache/wp-secrets.php")
got: ("/tmp/d20140617-479-1gqb2lc/cookbooks/chefignore")
Please stub a default value first if message might be received with other args as well.
# ./spec/centos/default_spec.rb:10:in `block (2 levels) in <top (required)>'
# ./spec/centos/default_spec.rb:20:in `block (2 levels) in <top (required)>'

最佳答案

您需要 stub 原始调用:

在 ChefSpec 3 中:

File.stub(:exist?).and_call_original
File.stub(:exist?).with('/path/to/file').and_return('...')

在 ChefSpec 4 中:

allow(File).to receive(:exist?).and_call_original
allow(File).to receive(:exist?).with('/path/to/file').and_return('...')

关于rspec - 在chefspec中打开 stub 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24270887/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com