めもめも のーと

ハマったこととか、覚えたこととか

Rspecで undefined method `validate_uniqueness_of' が出たので対応した件

とても久しぶりにRailsRspecを思い出しながら書いていたら、

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'

結構、はまりました。