我想从黄瓜步骤附上一个文件:
When /^I attach an image/ do
page.attach_file("Image", File.join(fixture_path, "green_small.jpg"))
end
出于某种原因,这会产生/home/xxx/test/fixtures/green_small.jpg
。在某处,fixture_path的默认值是黄瓜中的test/fixtures
。
我正在使用rspec,因此灯具的路径应为spec/fixtures
。我的Rspec spec_helper.rb
配置了这个:
RSpec.configure do |config|
config.fixture_path = "#{::Rails.root}/spec/fixtures"
end
我已尝试在config/environments/test.rb
中设置此内容但未成功。
显然,我可以自己构建路径,page.attach_file("Image", File.join(Rails.root, "spec", "fixtures", "green_small.jpg"))
有效。但fixture_path
已经存在。设置正确然后使用它会使步骤更加便携和清洁。
但是Cucumber并没有使用它。如何在黄瓜中获得正确的网址?
答案 0 :(得分:1)
如何在World
中定义Cucumber全局变量,features/support
档案features/support/path_define.rb
module PathDefine
def my_fixture_path
@my_fixture_path ||= "#{::Rails.root}/spec/fixtures"
end
end
World(PathDefine)
然后,您可以在步骤定义中的任何位置使用my_fixture_path
变量。
参考:https://github.com/cucumber/cucumber/wiki/A-Whole-New-World
希望这有帮助。
答案 1 :(得分:0)
根据this帖子,您应该使用测试中的路径,而不是环境
像这样:
attach_file(:csv_file, File.join(RAILS_ROOT, 'features', 'upload-files', 'products_csv_ok.csv'))
答案 2 :(得分:0)
就像一个注释,你不能把它放到你的环境/ * .rb文件中的原因是这个配置块是RSpec.config
...而不是YourAppName::Application.configure
您必须修改./spec/spec_helper.rb
文件中的路径。