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