2

文档

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

但是,我的应用程序用于ENV["HOME"]创建和读取文件 ( ~/.foorc),因此我需要 Aruba 使用假的ENV["HOME"].

我是否需要将它设置在一些支持文件中,或者有没有办法告诉 Aruba 它的tmp/arubafor files in 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]
    """
4

2 回答 2

2

查看 Aruba 本身的实现,我可以制作非常相似的东西:

文件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 路径在别处配置时,它将中断。

于 2013-02-02T15:30:07.407 回答
1

Aruba 为此提供了一个步骤

Given a mocked home directory

于 2016-02-02T09:27:53.003 回答