如何在RSpec 2中自动加载spec_helper.rb

时间:2011-02-21 00:26:53

标签: ruby rspec rspec2

在Ruby中开发gem时,我几乎总是需要一个文件,我可以在其中配置RSpec以满足我的需要,也许在此之前,需要一些辅助模块,这些模块应该在我的所有spec示例中都可用。

在Rails应用程序中,使用名为spec/spec_helper.rb的文件。令我恼火的一件事是,在典型的Rails环境中,您必须在每个包含要加载示例的文件中要求此spec_helper.rb文件。在过去,我遇到了很多问题,与更改示例文件中的加载路径和相对需求路径有关。

现在,对于我的宝石,我希望有一种方法可以在加载任何示例文件之前说RSpec要求spec_helper.rb文件。如果我调用rspec可执行文件,或者我可以在我的Rakefile中定义的rake规范任务,则独立于事实。

我知道我只能告诉RSpec我的spec_helper.rb的位置是这个spec_helper.rb手动需要所有示例文件,但我也想避免额外维护这种方法。

有没有更好的方法来实现这个目标?

2 个答案:

答案 0 :(得分:112)

在RSpec 2中,/spec文件夹始终自动在您的加载路径上。这意味着您只需要:

require 'spec_helper'

位于spec文件的顶部。这将始终加载/spec/spec_helper.rb,并且是您能够逃脱的最低限度。

这意味着您需要一种可怕的方法,例如:

require File.join(File.dirname(File.dirname(__FILE__)), 'spec_helper.rb')

(需要针对不同的嵌套级别进行更新)。

此外,您可以在.rspec文件中添加选项:--require spec_helper,这将在每个规范文件中都需要此文件,而顶部不需要手动require语句。

答案 1 :(得分:37)

执行--require spec_helper时,rspec --init行会自动添加到RSpec 3.0的.rspec文件中。