3

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

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

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

4

2 回答 2

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')
于 2010-02-21T00:16:14.967 回答
0

你要做的就是重新定义Object.const_missing.

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

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
于 2010-02-20T23:51:25.893 回答