gpt4 book ai didi

rspec - 设计和 RSpec : Accessing current_user in specs

转载 作者:行者123 更新时间:2023-12-05 05:25:34 25 4
gpt4 key购买 nike

我试图访问我的 View 规范中的设计辅助方法,但没有成功。我之前看到过很多类似的问题,但似乎没有一个专门回答我的问题,而回答过的问题的解决方案对我不起作用。

Testing Views that use Devise with RSpec

这是我的 rails_helper.rb 文件

 RSpec.configure do |config|

config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.include FactoryGirl::Syntax::Methods
config.include Devise::TestHelpers, type: :controller
config.include Devise::TestHelpers, :type => :view
config.include ControllerMacros, :type => :controller
include Warden::Test::Helpers
Warden.test_mode!
end

这是简单的 show.html.erb_spec.rb

describe "users/show.html.erb" do
it "displays the users own profile" do
member = create(:member)
login_as(member, :scope => :member)
user = member.user
assign(:user, user)
render(:template => 'users/show.html.erb')
end
end

现在请记住,我有一个用于设计的“成员(member)模型”和一个用于保存个人资料信息的“用户模型”。他们有一个有一个/属于一个关系。

我使用 current_member 助手(由设计提供)并且在我的应用程序 Controller 中我有:

class ApplicationController < ActionController::Base
include UsersHelper
helper_method :current_user
before_action :authenticate_member!
before_action :current_user
before_filter :instantiate_search

def current_user
if member_signed_in?
@current_user = User.find_by_member_id(current_member.id)
end
end

所以基本上我还定义了一个 current_user,它是 current_member 的用户。

我的问题是在我的 show.html.erb 文件中我使用了 current_user

我的错误是

   undefined local variable or method `current_user' for #<#   <Class:0x007fb6139e7f48>:0x007fb6139d6fe0>

我需要能够在我的测试中访问设计 current_member 但我不能。

如有任何帮助,我们将不胜感激。

编辑:这行得通,但代码很丑。

有没有更好的办法?

 require 'rails_helper'

describe "users/show.html.erb" do


it "displays the users own profile" do
@request.env["devise.mapping"] = Devise.mappings[:member]
@member = create (:member)
sign_in @member
@user = @member.user
def view.current_user
@user
end
assign(:user, @user)
render(:template => 'users/show.html.erb')
end
end

最佳答案

尝试做类似的事情

current_user = stub_model(:User)    
allow(view).to receive(:current_user).and_return(current_user)

在前 block

关于rspec - 设计和 RSpec : Accessing current_user in specs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30305899/

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