Rails4 rspec3に変更したら今まで通っていたテストが失敗した。

rspecのバージョンを3.0.1に上げた後、テストを実行したら、今まで通っていたテストのほとんどが失敗した。

原因は2つあった。

1つ目は、be_trueとbe_falseが、be_truthyとbe_falseyに変更されていたからだった。

be_trueをbe_truthyに、be_falseをbe_falseyに置換した。


2つ目は、spec_helperに下記のコードを書いていたが、typeが使えなくなっていたからだった。

RSpec.configure do |config|
  config.include Devise::TestHelpers, type: :controller
end

typeを使うためには、spec\spec_helper.rbに下記を追加する。

RSpec.configure do |config|
  config.infer_spec_type_from_file_location!  # この行を追加

  config.include Devise::TestHelpers, type: :controller
end

参考:
Consider renaming `be_true` and `be_false` to `be_truthy` and `be_falsey` · Issue #283 · rspec/rspec-expectations · GitHub
RSpec 3の重要な変更 - 有頂天Ruby