The success? predicate is deprecated and will be removed in Rails 6.0. への対応
The success? predicate is deprecated and will be removed in Rails 6.0. への対応
の続き。
テストは落ちなくなりましたが、WARNING
が出ていました。
こちらは、WARNING
対応時のメモです。
WARNING
DEPRECATION WARNING: The success? predicate is deprecated and will be removed in Rails 6.0. Please use successful? as provided by Rack::Response::Helpers. (called from block (8 levels) in <top (required)> at /home/circleci/project/spec/requests/sample.rb:13)
Rails 6.0
で、success?
が削除されるので非推奨。
対応方法
- it { is_expected.to be_success }
+ it { is_expected.to be_successful }
のように be_success
を使わないように修正すると WARNING
が消えました。
以下のコードでも同様の WARNING
が出ていました。
it "success" do
get :index
expect(response).to have_http_status(:success)
end
have_http_status(:success)
を have_http_status(:successful)
に変更すると、
it "success" do
get :index
expect(response).to have_http_status(:successful)
end
下記のようなエラーが出ました。
ArgumentError:
Invalid HTTP status: :successful
# ./spec/controllers/sample.rb:7:in `block (3 levels) in <top (required)>'
そこで、success
を使わないように書き直しました。
subject { get :index }
context "success" do
it { is_expected.to be_successful }
end
WARNING
が出ないようになりました。
これでも良かったです。
it "success" do
get :index
expect(response).to have_http_status 200
end