Ruby 如何让阿鲁巴使用不同的环境[“家”]?

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

发件人:

默认情况下,Aruba将创建一个目录tmp/Aruba,在其中执行文件操作

但是,我的应用程序使用
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