4

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

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在 cucumber 中。

我正在使用 rspec,所以灯具的路径应该是spec/fixtures. 我的 Rspecspec_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 使用的。如何在黄瓜中获得正确的网址?

4

3 回答 3

1

你如何定义 Cucumber 全局变量,World其中有一个 rb 文件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

希望这可以帮助。

于 2012-12-09T19:06:33.993 回答
0

根据this post,您应该在测试中使用路径,而不是环境

像这样:

attach_file(:csv_file, File.join(RAILS_ROOT, 'features', 'upload-files', 'products_csv_ok.csv'))
于 2012-12-06T17:20:43.397 回答
0

请注意,您不能将其放入您的环境/*.rb 文件的原因是此配置块用于RSpec.config...而不是用于YourAppName::Application.configure

您必须修改./spec/spec_helper.rb文件中的路径。

于 2014-02-11T18:45:04.263 回答