非常相似,这样的问题:Easy way to detect whether rspec or cucumber is running? 如何检测是否红宝石运行黄瓜测试
我怎么能在Ruby中发现,我下黄瓜运行?
我有一个共同的代码项目,这将需要一些路径变量,如果正在使用的代码是黄瓜项目或标准的脚本改变。我正在尝试涵盖相对路径问题。当在黄瓜结构下文件结构不同时,require_relative'../../{filename}'将失败。它需要回溯两个级别,如:'../../../../{filename}'。
共同的项目:C:\ RubyProjects \共同项目\共同
build_properties.rb
黄瓜项目:C:\ RubyProjects \程序\ 2017年\功能\ step_definitions
test_rest.rb
require_relative './../../../RubyProjects/common-project/common' class Verify include Common build_properties_from_yaml('', '') end
一些其他的项目:C:\ RubyProjects \程序\ 2017年\
File.rb
require_relative './../../RubyProjects/common-project/common' class RunCode include Common build_properties_from_yaml('', '') end
随着情况“utils”文件夹,它位于黄瓜的features文件夹下,但没有这样的文件夹在没有黄瓜的其他项目中。这就是抛出代码,我想在yaml加载过程中检查黄瓜。
能否请您解释一下为什么你的代码需要知道,如果它是在测试环境中运行?而如何你想改变你的代码的行为,因为如果你的代码需要知道,如果它在测试或其他环境中运行我会认为这是一个代码味道。为什么测试代码如果代码在测试中的工作方式与其他环境中的不同?这听起来像一个[XY问题(https://meta.stackexchange.com/a/66378/284887)给我。 – spickermann
你可能是正确的,这很可能是我的错误编码习惯。我正在尝试解决的一个问题是将一个项目的通用代码包含到多个其他项目中。黄瓜有一个特定的文件结构,我试图让代码知道并加载文件相对正确。 –
也许这只是我,但是为什么在测试环境中运行时,从源文件到要更改文件的相对路径?你想要一个不同的文件吗?你介意添加一个你试图实现的简单例子吗? – spickermann