为黄瓜定义正确的`fixture_path`

时间:2012-12-06 17:07:04

标签: rspec cucumber fixtures

我想从黄瓜步骤附上一个文件:

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并没有使用它。如何在黄瓜中获得正确的网址?

3 个答案:

答案 0 :(得分:1)

如何在World中定义Cucumber全局变量,features/support

中的rb文件

档案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文件中的路径。