从AA>
默认情况下,aruba将创建一个tmp/aruba目录,在其中执行文件操作。
但是,我的应用程序使用ENV["HOME"]
来创建和读取文件(~/.foorc
),因此我需要aruba使用一个假的ENV["HOME"]
。
我需要在某个支持文件中设置它,还是有方法告诉aruba对于tmp/aruba
中的文件使用它的ENV["HOME"]
?
下面是我正在测试的代码的一个摘录(显然我是在更高的层次上用cucumber/aruba测试这个代码,但是env[“home”]的使用在这里很重要):
def initialize config_path = ""
if config_path.empty?
@config_path = File.join ENV["HOME"], ".todotxt.cfg"
else
@config_path = config_path
end
if file_exists?
super @config_path
validate
end
end
def file_exists?
File.exists? @config_path
end
#....
ask_to_create unless @config.file_exists?
#...
规格:
Scenario: todotxt
Given an empty installation
When I run `todotxt`
Then it should pass with:
"""
Should I create a sample config file? [Y/n]
"""
最佳答案
研究阿鲁巴本身的实现,我可以设计一些非常类似的东西:
文件features/support/aruba.rb由cucumber自动加载并实现Around
挂钩:
# Temporarily enforce an isolated, fake, homedir.
around do |scenario, block|
@__aruba_original_home = ENV["HOME"]
ENV["HOME"] = File.expand_path(File.join("tmp", "aruba"))
block.call
ENV["HOME"] = @__aruba_original_home
end
从现在起,tmp/aruba目录用作$home。
注意,在aruba中,这个临时路径是可配置的,上面的代码没有考虑到这一点。当tmp路径在其他地方配置时,它将中断。
关于ruby - 如何使Aruba使用其他ENV [“HOME”]?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14478406/