【问题标题】:How to load a spec_helper.rb automatically in RSpec 2如何在 RSpec 2 中自动加载 spec_helper.rb
【发布时间】:2014-07-15 19:25:55
【问题描述】:

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

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

现在对于我的 gems,我希望有一种方法可以说 RSpec 在加载任何示例文件之前需要 spec_helper.rb 文件。与我是否调用 rspec 可执行文件或我可能在我的 Rakefile 中定义的 rake spec 任务无关。

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

有没有更好的方法来做到这一点?

【问题讨论】:

    标签: ruby rspec rspec2


    【解决方案1】:

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

    require 'spec_helper'
    

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

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

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

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

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

    【讨论】:

    • @afrikfr:老兄,谢谢你关于 --require 的提示!我再也不用输入那该死的行了! (\me 运行以删除一堆噪音)
    【解决方案2】:

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

    【讨论】:

    • 这是 IMO 最干净的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多