RSpec: Where to put custom matchers and other support code

Updated . Posted . Visible to the public. Repeats.

Custom matchers Show archive.org snapshot are a useful RSpec feature which you can use to DRY up repetitive expectations in your specs. Unfortunately the default directory structure generated by rspec-rails has no obvious place to put custom matchers or other support code.

I recommend storing them like this:

spec/support/database_cleaner.rb
spec/support/devise.rb
spec/support/factory_bot.rb
spec/support/vcr.rb
spec/support/matchers/be_allowed_access.rb
spec/support/matchers/be_denied_access.rb
spec/support/matchers/be_same_second_as.rb

To make this support code available to all specs, put the following into your spec_helper.rb, above the RSpec.configure block:

Dir[Rails.root.join("spec/support/**/*.rb")].sort.each {|f| require f}

Also see where to put shared example groups.

Henning Koch
Last edit
Felix Eschey
License
Source code in this card is licensed under the MIT License.
Posted by Henning Koch to makandra dev (2013-08-20 09:45)