The success? predicate is deprecated and will be removed in Rails 6.0. への対応
VuePress Version: The success? predicate is deprecated and will be removed in Rails 6.0. への対応 | hene
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