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

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

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

现在对于我的gem,我希望有一种方法来说只要说RSpec在加载任何示例文件之前需要spec_helper.rb文件。 独立于事实,如果我打电话rspec可执行文件,或我可以定义在我的Rakefile rake spec任务。

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

有没有更好的方法来完成这个?

在RSpec 2中, /spec文件夹总是自动在您的加载path上。 这意味着你所需要的是:

 require 'spec_helper' 

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

这意味着你不需要一个可怕的方法,如:

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

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

你也可以在你的.rspec文件中添加以下选项:– --require spec_helper ,它将在每个spec文件中需要这个文件,而不需要顶部的手动require语句。

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