Rspec,将spec文件映射到测试中的ruby文件

时间:2010-02-20 23:18:30

标签: ruby rspec lazy-evaluation

我想要的是一种不必在每个spec文件中“要求”测试类的方法。

所以希望有一种方法可以设置测试源代码的根目录,并且rspec会自动映射我的测试,或者自动将规范映射到ruby文件的任何其他方法。

在Rspec for rails中,这种情况很神奇,但这不是一个rails项目,我找不到任何有用的信息。

2 个答案:

答案 0 :(得分:3)

我假设你的项目中有一个lib文件夹和一个spec文件夹,你分别有代码和规范。创建spec/spec_helper.rb并添加

 # project_name/spec/spec_helper.rb
 $: << File.join(File.dirname(__FILE__), "/../lib") 
 require 'spec' 
 require 'main_file_within_lib_folder_that_requires_other_files'

现在,在您的个人规范文件中,您只需添加以下一行,如rails

 require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')

答案 1 :(得分:0)

您需要做的是重新定义Object.const_missing

找到这个基本example,修改它以满足您的需求(设置正确的路径等):

def Object.const_missing(name)
  @looked_for ||= {}
  str_name = name.to_s
  raise "Class not found: #{name}" if @looked_for[str_name]
  @looked_for[str_name] = 1
  file = str_name.downcase
  require file
  klass = const_get(name)
  return klass if klass
  raise "Class not found: #{name}"
end