【发布时间】:2015-06-06 19:02:27
【问题描述】:
我对这个目录结构有一些玩具问题:
- 库
- 001-problem.rb
- 002-another_problem.rb
- 003-more_problems.rb
- 等等……
- 规格
- 001-problem_spec.rb
- 002-another_problem_spec.rb
- 003-more_problems_spec.rb
- 等等……
spec 文件和 lib 文件被命名为相互匹配。
在规范文件中,假设它来自 001-problem_spec.rb,我可以照常进行:require_relative '../lib/001-problem_spec.rb'
但这有点过时了,因为我计划创建几十个文件。我想做一个模板。所以我在每个文件的顶部尝试了这个:
spec_file_basename = File.basename(__FILE__)
cut_here = spec_file_basename.index('_spec')
lib_file_basename = spec_file_basename[0...cut_here]
file = "../lib/#{lib_file_basename}.rb"
require_relative file
但这相当长且重复。我想将类似这样的代码块放入一个 spec_helper 文件中,以便我的每个规范文件都可以像这样引用它:require 'spec_helper'。显然,仅仅将前面的代码块粘贴到 spec_helper 文件中是行不通的,因为__FILE__ 将返回我的 helper 文件的名称(即:spec_helper.rb),而不是我的规范文件(即: 001-problem_spec.rb)。
有没有办法获取调用 require 'spec_helper' 的文件的名称,然后在我的 spec_helper 文件中使用该文件名,以便 spec_helper 可以为 spec 文件要求正确的 lib 文件?
【问题讨论】: