从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/

10-14 02:35