# 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

# 参考🔗