我有以下测试以确保需要登录。大多数测试需要登录用户,因此我让用户登录设置。但是对于这个测试,我需要他们退出。
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]: 预期响应是&lt; 3XX:重定向&gt;,但是&lt; 200:OK&gt;
它说它会起作用,但它只是不起作用。
https://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara
如果出于某种原因需要注销登录的测试用户,可以使用Warden的注销助手。
注销(:用户)
Rails 5.0.2
设计4.2.1
答案 0 :(得分:0)
logout
本身没有任何参数。也许logout :user
也可以。我没有使用FactoryGirl,因此将它混淆为FactoryGirl符号。