我正在使用Cucumber和Aruba测试一个在GLI之上编写的Ruby命令行应用程序为了防止测试影响生产数据,我更新ENV['HOME']以指向一个测试目录。我想检查一下测试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的Then a file named "" should exist步骤定义并将其扩展到完整路径?

最佳答案

我仍然有兴趣看看是否可以用黄瓜/阿鲁巴做这个。同时,以下是我正在做的一个简单的例子:
features/app_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_definitions/app_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

这在阿鲁巴的check_file_presence没有那么强大,但它完成了基本的工作。
对于更多的背景知识,这种方法背后的想法是在应用程序的目录结构的根目录中有一个test_arenas目录对于每个测试,都会创建一个单独的test_arenas/set_X目录,其中包含必要的文件在每次测试之前,env['home']被指向相应的test_arenas/set_X目录。

关于ruby - 使用Ruby,Cucumber和Aruba在测试主目录中检查文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22847887/

10-11 03:01
查看更多