1. ホーム
  2. ruby-on-rails

[解決済み] Rspec 3 フラッシュメッセージのテスト方法

2023-04-16 03:39:04

質問

コントローラのアクションとフラッシュメッセージの有無をrspecでテストしたいのですが、可能でしょうか?

アクション :

def create
  user = Users::User.find_by_email(params[:email])
  if user
    user.send_reset_password_instructions
    flash[:success] = "Reset password instructions have been sent to #{user.email}."
  else
    flash[:alert] = "Can't find user with this email: #{params[:email]}"
  end

  redirect_to root_path
end

スペック :

describe "#create" do
  it "sends reset password instructions if user exists" do
    post :create, email: "[email protected]"      
    expect(response).to redirect_to(root_path)
    expect(flash[:success]).to be_present
  end
...

でも、エラーになっちゃった。

Failure/Error: expect(flash[:success]).to be_present
   expected `nil.present?` to return true, got false

どのように解決するのですか?

があるかどうかをテストしています。 flash[:success] があるかどうかをテストしていますが、 コントローラの中では flash[:notice]