Rspecで undefined method `validate_uniqueness_of' が出たので対応した件
とても久しぶりにRailsでRspecを思い出しながら書いていたら、
NoMethodError: undefined method `validate_uniqueness_of' for ...
が出て困って対応したときのメモ。 結論から書くと、Railsでよくあるバージョンの問題でした。
環境
※抜粋 rails (5.0.0.1) rspec-rails (3.5.2) shoulda-matchers (2.8.0) <=今回の肝
is_expected.to ensure_length_of
とか is_exepcted.to validate_uniqueness_of
などはshouda-matchers が提供しているテストコードを簡潔に書くためのgemですが、
使用しているRspecのバージョンによっては動かないことがあるようです。
(2016/11/07現在のshoulda-matchers最新バージョンは3.1.1、Rspecは3.5.2)
そこでshoulda-matchersのバージョンをいろいろ変えて試したところ、2.8.0ならエラーがなくSpecが通りました。
# Gemfile に下のようにバージョンを指定して bundle install gem 'shoulda-matchers', '~> 2.8.0'
結構、はまりました。