我需要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
情景开始时我怎样才能摆脱这些警告?
答案 0 :(得分:1)
您可以将代码包装在silence_warnings
块中:
silence_warnings do
['/helpers/*', '/pages/*', '/models/*'].each do |path|
Dir[File.dirname(__FILE__) + path].each { |file| require file }
end
end
对于你正在尝试做的任何事情,可能有一种更好的方式,以一种与你的测试框架相配的方式,但上面的代码应该处理你的直接问题。
答案 1 :(得分:0)
您可以在黄瓜之前设置帮助器和模型。钩子。
仅运行一次前挂钩的推荐方法是使用全局变量,所以:
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)