gpt4 book ai didi

ruby-on-rails - rails 部分 rspec 中的 view.stub 给出 'undefined method view_context'

转载 作者:行者123 更新时间:2023-12-04 06:30:37 25 4
gpt4 key购买 nike

使用 Rails 3.2.11

我有几个 View rspec 测试,我需要在其中 stub “current_user”调用。

我在常规 View 测试中成功使用了它,如下所示:

require 'spec_helper'

describe "projects/_my_project.html.erb" do

before(:each) do
@client = FactoryGirl.create(:user)
view.stub(:current_user) { @client }
end

describe "new proposals notice" do
it "does not display new_propsals if in state posted and clicked after last submitted" do
@my_project = FactoryGirl.build(:project, status: "posted", last_proposals_click: "2012-02-02 14:01:00", last_proposal_submitted: "2012-02-02 14:00:00")
render :partial => "/projects/my_project", :locals => { :my_project => @my_project }
rendered.should_not have_content "You received new proposals"
end
end
end

Current_user 由 Devise 在 Controller /helpers.rb(在 gem 中)定义。我在 View 或 Controller 中到处使用它作为 current_user(作为方法,而不是实例)。

问题似乎出在 view.stub 中的 View 在这里为零,是否还有另一个对象用于局部?我只是不明白为什么这在常规 View 中是完美的,而不是在局部 View 中。

我得到:
Failure/Error: view.stub(:current_user) { @client }
NoMethodError:
undefined method `view_context' for nil:NilClass

这是 View 中使用 current_user 以确保完整性的行:
<% if my_project.user_id == current_user.id %> 

有谁知道我怎样才能成功地 stub current_user,我在这里不知所措......

谢谢

最佳答案

事实证明,将 view.stub(:current_user) { @client } 移动到每个“it”块中解决了问题;如果它在 'before:each/all' 块中,它似乎不起作用。

关于ruby-on-rails - rails 部分 rspec 中的 view.stub 给出 'undefined method view_context',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15066417/

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