我正在使用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/