簡體   English   中英

如何在Rails集成/控制器單元測試中注銷用戶?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM