【发布时间】:2018-06-04 21:33:56
【问题描述】:
所以我正在构建一个个人库,这意味着我正在制作一个包含几个我在整个项目中常用的特性和行为的 gem。
这个库将有许多不同的部分,每个部分都是为了涵盖特定功能或行为之一。
我希望库做的一件事是让我能够导入所有内容,或者选择我正在处理的项目所需的特定功能。为此,我做了两件事:1)我在它自己的文件夹中设置了每个单独的功能,并使用一个特殊的“导入”文件,该文件需要该功能的所有内容以必要的顺序,2)在顶层创建了两个方法访问那些“导入”文件的 gem:
module MyLibrary
def self.import(feature)
file = get_import_file_for(feature)
require file
end
def self.import_all
get_all_import_files.each do |file|
require file
end
end
end
我想通过在调用方法之前和之后检查 $LOADED_FEATURES 来测试这两种方法,以确认它们实际上是必需的。
问题是我在规范助手中自动调用 MyLibrary.import_all 方法,以便为其余测试(测试特定功能)加载所有内容:
RSpec.configure do |config|
MyLibrary.import_all
end
一旦调用它,似乎所有测试都已加载,这意味着当测试导入方法时,所有文件都已被要求,因此测试将无法工作。
我该如何解决这个问题? 也许有一种方法可以设置一个规范文件以独立于规范助手运行? 或者以某种方式将该测试设置为始终先运行,然后再需要这些文件?
【问题讨论】: