1

Railsアプリのビューの仕様を書き込もうとしていますが、このエラーに遭遇しました。

ActionView::Template::Error:
       undefined local variable or method `current_user' for #<#<Class:0x007fa47d2612d0>:0x007fa47e267710>

これが私のビュースペックの書き方です:

describe "/newsletters/index.html.erb" do
  include NewslettersHelper
  include Authlogic::TestCase

  def current_user(stubs = {})
    @current_user ||= mock_model(User, stubs)
  end

  def user_session(stubs = {}, user_stubs = {})
    @current_user_session ||= mock_model(UserSession, {:user => current_user(user_stubs)}.merge(stubs))
  end



def login(session_stubs = {}, user_stubs = {})
    UserSession.stub!(:find).and_return(user_session(session_stubs, user_stubs))
  end



 def logout
    @user_session = nil
  end



context "without a logged-in user" do
    before(:each) do
      activate_authlogic
      logout()
      assigns[:newsletters] = @newsletters = [ mock_model(Newsletter, :titre => "value for titre",
       :sommaire => "value for sommaire", :content => "value for content") ]
    end

it "renders a list of newsletters" do
  # pending("find how to mock authlogic current user in views spec")
  render
  rendered.should have_selector("tr>td") do |row|
    row.should have_content("value for titre")
  end
  rendered.should have_selector("tr>td") do |row|
    row.should have_content("value for sommaire")
  end
  rendered.should have_selector("tr>td") do |row|
    row.should have_content("value for content")
  end
end

終わり

4

3 に答える 3

1

ビュー仕様は分離されたコンテキストであるため、ビュー コンテキストで current_user メソッドをスタブする必要があります。

view.stub(:current_user).and_return(mock_model(User))

ビュー仕様の詳細については、relishのビュー仕様ページをお勧めします。

于 2015-10-03T09:28:01.347 に答える
1

試してみてcontroller.stub(:current_user) { mock_model(User) } ください

于 2012-07-25T13:57:18.617 に答える