与此问题非常相似:Easy way to detect whether rspec or cucumber is running?
如何在Ruby中检测到我在黄瓜下运行?
我在公共代码项目中有一些路径变量,如果使用的代码是黄瓜项目或标准脚本,则需要更改。我试图解决相对路径问题。 require_relative' ../../ {filename}'当黄瓜结构下的文件结构不同时会失败。它需要遍历两个更多级别,如:' ../../../../ {filename}'。
Common Project:C:\ RubyProjects \ common-project \ common
build_properties.rb
def build_properties_from_yaml('', '')
params = YAML.load_file(File.absolute_path << '/utils/parameters.yml')
end
Cucumber Project:C:\ RubyProjects \ programs \ 2017 \ features \ step_definitions
test_rest.rb
require_relative './../../../RubyProjects/common-project/common'
class Verify
include Common
build_properties_from_yaml('', '')
end
其他一些项目:C:\ RubyProjects \ programs \ 2017 \
File.rb
require_relative './../../RubyProjects/common-project/common'
class RunCode
include Common
build_properties_from_yaml('', '')
end
以&#34; utils&#34;的情况为例。文件夹,它位于黄瓜的功能文件夹下,但没有黄瓜的其他项目没有这样的文件夹。这就是抛出代码的原因,我想在yaml加载过程中检查黄瓜。
答案 0 :(得分:0)
如果仅if Rails.env.test?
不适合您,您可以添加到features/support/env.rb
:
ENV['CUCUMBER'] = "true"
然后检查它你想要的地方:
if ENV['CUCUMBER']
...
end
您可以将其包装在某个方法中并使用它。
编辑: @spikermann的评论是绝对正确的。当然,如果您的代码来自环境,那么您做错了。但在某些情况下(一次性代码或某种类型),制作黑客攻击可能更容易。