私はこのコントローラーを持っています。
class SessionsController < Devise::SessionsController
# GET /resource/sign_in
def new
self.resource = build_resource(nil, :unsafe => true)
clean_up_passwords(resource)
respond_with(resource, serialize_options(resource))
end
# POST /resource/sign_in
def create
self.resource = warden.authenticate!(auth_options)
set_flash_message(:notice, :signed_in, :username => resource.username) if is_navigational_format?
sign_in(resource_name, resource)
respond_with resource, :location => after_sign_in_path_for(resource)
end
end
そしてキュウリのこのステップ定義:
Given /^a user "(.*?)" exists$/ do |user_name|
@user = User.create!(:username => user_name , :password => "tamara")
end
When /^he logs in$/ do
visit("/users/sign_in")
fill_in('Username', :with => "roelof")
fill_in('Password', :with => "tamara")
click_button('Sign in')
end
Then /^he should see "(.*?)"$/ do |message|
page.should have_content(message)
end
ログインが成功した後にのみすべてが正常に機能し、ログイン成功ページではなくホームページにリダイレクトされます。そのため、フラッシュメッセージは表示されません。
ロエロフ
編集 1: コントローラーと resource_name を確認しましたが、resource の値が正しいようです。