Ruby 如何让阿鲁巴使用不同的环境[“家”]?
发件人: 默认情况下,Aruba将创建一个目录tmp/Aruba,在其中执行文件操作 但是,我的应用程序使用Ruby 如何让阿鲁巴使用不同的环境[“家”]?,ruby,cucumber,aruba,Ruby,Cucumber,Aruba,发件人: 默认情况下,Aruba将创建一个目录tmp/Aruba,在其中执行文件操作 但是,我的应用程序使用ENV[“HOME”]创建和读取文件(~/.foorc),因此我需要Aruba使用假的ENV[“HOME”]) 我是否需要在某个支持文件中设置它,或者是否有方法告诉Aruba在ENV[“HOME”]中的文件使用它的tmp/Aruba 下面是我正在测试的代码摘录(显然,我正在用Cucumber/Aruba进行更高级别的测试,但ENV[“HOME”]的使用在这里很重要): 规格: Scenar
ENV[“HOME”]
创建和读取文件(~/.foorc
),因此我需要Aruba使用假的ENV[“HOME”]
)
我是否需要在某个支持文件中设置它,或者是否有方法告诉Aruba在ENV[“HOME”]
中的文件使用它的tmp/Aruba
下面是我正在测试的代码摘录(显然,我正在用Cucumber/Aruba进行更高级别的测试,但ENV[“HOME”]的使用在这里很重要):
规格:
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自动加载,并实现
环绕
钩子:
# 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
注意,在阿鲁巴,这个临时路径是可配置的,上面的代码没有考虑到这一点。当tmp路径在别处配置时,它将中断。阿鲁巴提供:
给定模拟主目录
# 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