ruby-on-railsrubyrspecrspec-railsshoulda-matchers

Shoulda::Matchers::Independent::DelegateMethodMatcher: undefined method `allow_nil'


I'm trying to test a delegate method of my Comment model using shoulda-matchers (3.1.2) & rspec-rails (3.7.2) in my rails (5.0.1) application with ruby 2.5.0-p0 (x86_64-linux) and getting this error:

1) Comment delegation 
     Failure/Error: it { should delegate_method(:name).to(:user).allow_nil }

     NoMethodError:
       undefined method `allow_nil' for #<Shoulda::Matchers::Independent::DelegateMethodMatcher:0x00005587de5bc488>
     # ./spec/models/comment_spec.rb:11:in `block (3 levels) in <top (required)>'

Finished in 0.00225 seconds (files took 3.62 seconds to load)
1 example, 1 failure

The code is quite clean and straightforward, I think there could be some errors with the library rather than my implementation code. Does anyone know what is going wrong here? Thanks!


Solution

  • You must upgrade your shoulda-matchers gem to the version 4.0.0.rc1 or greater.

    You can see the allow_nil method was introduced in this commit, which belongs to the 4.0.0 release.