3

我需要一些文件features/support/env.rb

['/helpers/*', '/pages/*', '/models/*'].each do |path|
  Dir[File.dirname(__FILE__) + path].each { |file| require file }
end

(我这样做是因为我想在运行任何测试之前创建测试用户和其他一些东西。)

但似乎这些文件随后由 Cucumber 加载,load因为我收到大量警告,例如 Cucumber 加载它们时:

/home/andrey/dev/project/features/support/models/my_class.rb:2: warning: already initialized constant MyClass::MY_CONSTANT

当场景开始时。我怎样才能摆脱这些警告?

4

2 回答 2

1

您可以将代码包装在一个silence_warnings块中:

silence_warnings do
  ['/helpers/*', '/pages/*', '/models/*'].each do |path|
    Dir[File.dirname(__FILE__) + path].each { |file| require file }
  end
end

对于您正在尝试做的任何事情,可能有更好的方法,以一种可以很好地与您的测试框架配合使用的方式,但上面的代码应该可以处理您的直接问题。

于 2013-03-19T20:00:03.683 回答
0

您可能可以在黄瓜之前的钩子中设置您的助手和模型。

只运行一次 before 钩子的推荐方法是使用全局变量,因此:

Before do 
  if !$already_required
    ['/helpers/*', '/pages/*', '/models/*'].each do |path|
      Dir[File.dirname(__FILE__) + path].each { |file| require file }
    end
    $already_required = true 
  end 
end 

https://github.com/cucumber/cucumber/wiki/Hooks#running-a-before-hook-only-once

于 2013-03-23T11:34:21.060 回答