Testing associations with rspec-rails 3.0.1 and shoulda doesn't work
rspec, ruby, ruby-on-rails, shoulda
Solution
shoulda-matchers is the gem that provides association, validation, and other matchers.
The shoulda gem (which we also make) is for using shoulda-matchers with Test::Unit (and also provides some nice things like contexts and the ability to use strings as test names). But if you're on RSpec, you'll want to use shoulda-matchers, not shoulda.
Problem
Currently, with rspec-rails (2.14.2), I test my associations in model specs with the shoulda (3.5.0) gem like so: ``` # app/models/user.rb class User < ActiveRecord::Base belongs_to :school end # spec/models/user_spec.rb describe User do it { should belong_to :school } end ``` After some research, I hit a wall trying to make association-related assertions work (they all seem to fail). Error message: ``` 1) User Failure/Error: it { is_expected.to belong_to :school } NoMethodError: undefined method `belong_to' for #<RSpec::ExampleGroups::School:0x007f8a4c7a68d0> # ./spec/models/user.rb:4:in `block (2 levels) in <top (required)>' ``` So my questions are: - Can you test associations without the shoulda gem? This doesn't seem possible based on what I've seen with the "expect" syntax. - Does the shoulda gem break with rspec 3.0.1 for everyone? Is there a workaround?