如何检测Ruby是否正在运行黄瓜测试

时间:2017-09-07 17:25:06

标签: ruby cucumber environment-variables

与此问题非常相似: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加载过程中检查黄瓜。

1 个答案:

答案 0 :(得分:0)

如果仅if Rails.env.test?不适合您,您可以添加到features/support/env.rb

ENV['CUCUMBER'] = "true"

然后检查它你想要的地方:

if ENV['CUCUMBER']
  ...
end

您可以将其包装在某个方法中并使用它。

编辑: @spikermann的评论是绝对正确的。当然,如果您的代码来自环境,那么您做错了。但在某些情况下(一次性代码或某种类型),制作黑客攻击可能更容易。