gpt4 book ai didi

ruby-on-rails - 如何 stub users_controller | authlogic, rspec2, rails3, factory_girl

转载 作者:行者123 更新时间:2023-12-01 09:38:31 25 4
gpt4 key购买 nike

我的 users_controller.rb

# GET /users/1/edit
def edit
@user = current_user
#@user = User.find(params[:id])
end

我可爱的 ​​users_controller_spec.rb(注意我所有被注释掉的尝试)

describe "Authenticated examples" do
before(:each) do
activate_authlogic
UserSession.create Factory.build(:valid_user)
end

describe "GET edit" do
it "assigns the requested user as @user" do
@user = Factory.create(:valid_user)
assigns(:user).should be(Factory.build(:valid_user))
end
end

user.rb - 工厂

Factory.define :valid_user, :class => User do |u|
u.username "Trippy"
u.password "password"
u.password_confirmation "password"
u.email "elephant@gmail.com"
u.single_access_token "k3cFzLIQnZ4MHRmJvJzg"
end

基本上我只是想让这个 RSpec 测试以最合适的方式通过。

我需要能够非常简单地说,mock_user 就是 current_user

如果我在 users_controller.rb 中使用 @user = User.find(params[:id])

,则此测试通过

谢谢!!

最佳答案

rspec-rails 中有一个错误(参见 https://github.com/rspec/rspec-rails/issues/391),当在 RSpec 的全局 before 钩子(Hook)中使用时,它会破坏 activate_authlogic。

代替

# spec_helper.rb

# In RSpec.configure
config.before :each, :type => :controller do
activate_authlogic
user = User.new(:login => "user", :password => "secret")
UserSession.create(user)
end

你可以定义一个助手

# spec_helper.rb

require 'authlogic/test_case'
module LoginHelper
include Authlogic::TestCase

def login_user
activate_authlogic
user = User.new(:login => "user", :password => "secret")
UserSession.create(user)
end
end

并在需要时在 before block 中引用它

# <controller>_spec.rb

describe "GET 'edit' when logged in" do
before do
login_user
end

it "should be successful" do
get 'edit'
response.should be_success
end

关于ruby-on-rails - 如何 stub users_controller | authlogic, rspec2, rails3, factory_girl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3660158/

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