単体で RSpec を使う際の require のやり方

結論

spec_helper.rbrequireを書く。

具体例

require を書く場所

requireを書く場所はspec_helper.rbのどこでもいい*1のですが、私は一番下(endの直前)に書きます。以下のようになります。

RSpec.configure do |config|
  (省略)

  require "#{File.join(File.dirname(__FILE__), '../foo/bar')}"
  require "#{File.join(File.dirname(__FILE__), '../hoge/fuga')}"
end

File.dirname(__FILE__)spec_helper.rbがある場所を指します。したがって上記の例ですとrequireするファイルは以下の二つになります。.rspecがある場所がルートディレクトリです。

  • foo/bar.rb
  • hoge/fuga.rb

require するファイルをまとめて指定する

requireするファイルを一つ一つ指定するのは DRY ではないので、まとめて指定することもできます。たとえば以下のように書きます。

RSpec.configure do |config|
  (省略)

  Dir[File.join(File.dirname(__FILE__), "../lib/**/*.rb")].each { |f| require f }
end

上記の例ですと、lib/配下の全ての.rbファイルがrequireされます。全てのファイルがrequireされますので、思わぬファイルまでrequireされてしまう可能性には注意が必要です。

参考ページ(感謝!)

*1:RSpec.configure do |config| 〜 end 内

Powered by はてなブログ