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

标签 ruby rspec rspec2

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

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

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

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

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

最佳答案

在 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 语句顶部。

关于ruby - 如何在 RSpec 2 中自动加载 spec_helper.rb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5061179/

相关文章:

轨道上的 ruby 。调度.fcgi 。 dependencies.rb :251:in `require' : cannot load such file -- fcgi (LoadError)

ruby - 我如何测试我是否正确地与 mixin 接口(interface)?

ruby-on-rails - 测试 Controller 使用 belongs_to 关联创建操作

ruby-on-rails - 使用 RSpec 和 rails 测试 "HTML fixtures"

ruby - 与时间一起使用的规范存在问题

ruby-on-rails - 剥离 rails 仅供 api 使用

ruby-on-rails - Ruby one liner 替换大块代码

ruby - 是否可以在 ruby​​ 中包含每个对象的模块?

ruby-on-rails - 为什么我的 View 规范表现不一致?

ruby - Rspec should_receive 和 abort