我想要的是一种不必在每个spec文件中“要求”测试类的方法。
所以希望有一种方法可以设置测试源代码的根目录,并且rspec会自动映射我的测试,或者自动将规范映射到ruby文件的任何其他方法。
在Rspec for rails中,这种情况很神奇,但这不是一个rails项目,我找不到任何有用的信息。
答案 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