我在Rails 3项目上使用Devise,我正在尝试使用Cucumber和Rspec在BDD上完成所有这些。
问题是当我使用像这样的Cucumber Scenario登录时:
Scenario: Login
Given I am not authenticated
And I am on the home page
And I have a user with username "jsmith"
When I follow "Log in"
And I fill in "Username" with "jsmith"
And I fill in "Password" with "password"
And I press "Sign in"
Then I should be on the home page
And I should see "Logged in successfully."
And I should see "Log out"
当我在routes.rb
中获得以下内容时遇到问题 match 'home' => "home#index"
devise_for :users,
:path_names => { :sign_in => 'login', :sign_out => 'logout'}
devise_scope :user do
get '/login' => 'devise/sessions#create'
get '/logout' => 'devise/sessions#destroy'
end
resources :users
问题是我没有看到“登录成功”。但是,如果我将routes.rb中的行更改为
resources :users, :except => [:show]
然后它工作正常,但我不能为用户提供show方法。
有没有办法绕过这一切?
答案 0 :(得分:0)
问题是您没有看到“已成功登录”或您是否未登录?我认为设计重定向到您的用户,如果它没有找到它转到另一个页面...索引? - 你的节目页面中是否有通知标签和片段(应该在布局中)?
修改强>
你应该检查一下你的节目中是否有会话值,如果你没有看到字符串'已签名',那么你应该在节目中完成<%= session.to_yaml %>
,我的猜测是它已被删除,可能是因为你被重定向了。