[英]How do I log in a user with Devise for Rails controller/integration unit tests?
[英]How do I log out a user in a Rails integration/controller unit test?
我有以下測試,以確保需要登錄。 大多數測試需要登錄用戶,因此我讓用戶登錄設置。 但是對於這個測試,我需要他們退出。
require 'test_helper'
class DealsControllerTest < ActionDispatch::IntegrationTest
include Warden::Test::Helpers
setup do
@deal = deals(:one)
@user = users(:one)
# https://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara
@user.confirmed_at = Time.now
@user.save
login_as(@user, :scope => :user)
end
teardown do
Warden.test_reset!
end
test "require sign in for deal list" do
logout @user
get deals_url
assert_redirected_to new_user_session_path
end
我收到了錯誤
失敗:DealsControllerTest #test_require_sign_in_for_deal_list [C:/Users/Chloe/workspace/fortuneempire/test/controllers/deals_controller_test.rb:35]:預期響應為<3XX:redirect>,但是<200:OK>
它說它會起作用,但它只是不起作用。
https://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara
如果由於某種原因您需要注銷登錄的測試用戶,您可以使用Warden的注銷助手。
注銷(:用戶)
Rails 5.0.2
設計4.2.1
在沒有任何參數工作的情況下自行logout
。 也許logout :user
也會工作。 我沒有使用FactoryGirl因此將它混淆為FactoryGirl符號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.