RoRでポートフォリオを作成中。
現在、ログイン機能を追加しそれについてrspecでテストを行いたい。
参考資料はrails tutorialの8章になり、emailとpasswordをセッションに渡し、その情報を元にログインする形となっている。
html
1<div class="row"> 2 <div class="col-md-6 col-md-offset-3"> 3 <%= form_with(url: login_path, scope: :session, local: true) do |f| %> 4 5 <%= f.label :email %> 6 <%= f.email_field :email, class: 'form-control' %> 7 8 <%= f.label :password %> 9 <%= f.password_field :password, class: 'form-control' %> 10 11 <%= f.submit "Log in", class: "btn btn-primary" %> 12 <% end %> 13 14 <p>New user? <%= link_to "Sign up now!", signup_path %></p> 15 </div> 16</div>
よってパラメータの取得については
params[:session][:email] params[:session][:password]
などとなる
rspecのrequest.specにおいて、下記のように記載
describe 'check response' do before do @user = attributes_for(:user) post login_path, params: { session: { email: @user.email, password: @user.password } } end it 'redirect to show' do expect(response).to redirect_to user_path(@user) end it 'return a 302 response' do expect(response).to have_http_status(302) end it 'log in successfully' do expect(is_logged_in?).to be_truthy end end
routes
1sessions_new GET /sessions/new(.:format) sessions#new 2 login GET /login(.:format) sessions#new 3 POST /login(.:format) sessions#create 4 logout DELETE /logout(.:format) sessions#destroy
実行結果は
NoMethodError: undefined method `email' for #<Hash:0x000055e38deaf620>
となる
なぜ、未定義となるのか教えてください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/21 07:48