gpt4 book ai didi

ruby - 如何在我的 RSpec 测试中访问 Sorcery?

转载 作者:数据小太阳 更新时间:2023-10-29 06:53:52 25 4
gpt4 key购买 nike

巫术认证 gem :https://github.com/NoamB/sorcery

Sorcery 的创建者提供了一个示例 Rails 应用程序,其中包含在其 Test::Unit 功能测试中的 Sorcery 测试助手:https://github.com/NoamB/sorcery-example-app/blob/master/test/functional/users_controller_test.rb

# Test::Unit functional test example
require 'test_helper'

class UsersControllerTest < ActionController::TestCase
setup do
@user = users(:noam)
end

test "should show user" do
login_user
get :show, :id => @user.to_param
assert_response :success
end

但我不知道如何让 login_user 在我的 RSpec Controller 规范中工作。

/gems/sorcery-0.7.5/lib/sorcery/test_helpers/rails.rb:7:in `login_user': 
undefined method `auto_login' for nil:NilClass (NoMethodError)

这是 Sorcery gem 中关于上述错误的相关代码: https://github.com/NoamB/sorcery/blob/master/lib/sorcery/test_helpers/rails.rb

module Sorcery
module TestHelpers
module Rails
# logins a user and calls all callbacks
def login_user(user = nil)
user ||= @user
@controller.send(:auto_login,user)
@controller.send(:after_login!,user,[user.send(user.sorcery_config.username_attribute_names.first),'secret'])
end

def logout_user
@controller.send(:logout)
end
end
end
end

更新:

根据 Sorcery 的文档“Testing in Rails 3”,我确实已将 include Sorcery::TestHelpers::Rails 添加到我的 spec_helper.rb

Sorcery 测试助手 login_user 作用于 @controller,但我收到错误,因为 @controllernil 在我的 Controller 规范中。这是我的规范:

#spec/controllers/forums_controller_spec.rb
require 'spec_helper'

describe ForumsController do
render_views

describe 'GET new' do
describe 'when guest' do
it 'should deny and redirect' do
get :new
response.should redirect_to(root_path)
end
end

describe 'when admin' do
p @controller #=> nil
@user = User.create!(username: "Test", password: "secret", email: "test@test.com")
login_user # <--------------- where the error occurs
it 'should resolve' do
get :new
response.should render_template(:new)
end
end
end
end

最佳答案

FWIW,我花了很多时间寻找这个问题的答案。我正在使用 capybara 和 RSpec。事实证明,您需要手动登录才能使用 Sorcery 使登录生效。

我在这里创建了一个关于使用 Sorcery/Rspec/Capybara 创建集成测试的要点: https://gist.github.com/2359120/9989c14af19a48ba726240d030c414b882b96a8a

关于ruby - 如何在我的 RSpec 测试中访问 Sorcery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8708320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com