使用Ruby、Cucumber和Aruba检查测试主目录中的文件

使用Ruby、Cucumber和Aruba检查测试主目录中的文件,ruby,cucumber,aruba,Ruby,Cucumber,Aruba,我正在使用Cucumber和Aruba测试一个在上面编写的Ruby命令行应用程序。为了防止测试影响生产数据,我将ENV['HOME']更新为指向测试目录。我想检查testingENV['HOME']目录中是否存在文件。我很想使用阿鲁巴来实现这一点,但我无法使ENV['HOME']正确展开 例如: Scenario: Testing config files are found Given I switch ENV['HOME'] to be "set_a" of test_arena T

我正在使用Cucumber和Aruba测试一个在上面编写的Ruby命令行应用程序。为了防止测试影响生产数据,我将
ENV['HOME']
更新为指向测试目录。我想检查testing
ENV['HOME']
目录中是否存在文件。我很想使用阿鲁巴来实现这一点,但我无法使
ENV['HOME']
正确展开

例如:

Scenario: Testing config files are found
  Given I switch ENV['HOME'] to be "set_a" of test_arena
  Then a file named "#{ENV['HOME']}/config.xml" should exist

是否可以将ENV['HOME']传递给Aruba的
,然后一个名为“”的文件应该存在
step_定义,并将其扩展到完整路径?

我仍然有兴趣看看是否可以在Cucumber/Aruba中本机执行此操作。同时,以下是我正在做的一个简化示例:

features/app\u name.feature
文件中,定义以下场景:

Scenario: Testing config files are found
  Given I switch ENV['HOME'] to be "test_arenas/set_a"
  Then a test_arena file named "config.xml" should exist
然后,在
features/step\u definitions/app\u name.rb
文件中定义步骤:

Given(/^I switch ENV\['HOME'\] to be "(.*?)"$/) do |testing_dir|
  ENV['HOME'] = File.join(File.expand_path(File.dirname(__FILE__)), 
    '..','..', testing_dir)
end

Then(/^a test_arena file named "(.*?)" should exist$/) do |file_name|
  file_path = "#{ENV['HOME']}/#{file_name}"
  expect(File.exists?(file_path)).to be_truthy
end
这在阿鲁巴没有那么强大,但它完成了基本的工作


对于更多的背景知识,这种方法背后的想法是在应用程序目录结构的根目录中有一个
test\u arenas
目录。对于每个测试,将创建一个单独的
test\u arenas/set\X
目录,其中包含必要的文件。在每次测试之前,ENV['HOME']指向相应的
test\u arenas/set\u X
目录