使用 rspec 测试视图 - 渲染视图时帮助文件中未定义的 current_user
Posted
技术标签:
【中文标题】使用 rspec 测试视图 - 渲染视图时帮助文件中未定义的 current_user【英文标题】:Testing views with rspec - undefined current_user in helper file when rendering view 【发布时间】:2011-10-31 23:26:14 【问题描述】:我正在使用 rspec,设计并尝试测试我的观点。 在我的视图调用的辅助函数中,我使用变量 current_user 这在实践中效果很好,但使用 rspec,我得到一个可悲的“未定义变量或方法 current_user”错误。
我尝试了很多不起作用的东西。
@user = FactoryGirl.build_stubbed(:user)
assign(current_user, @user)
sign_in :user, @user
def current_user
@user
end
current_user = @user
view.stub!(:current_user).and_return @user
assign[:currrnet_user] = @user
有人知道怎么做吗?提前致谢。
【问题讨论】:
我也遇到了同样的问题。你有没有解决过?让我知道。谢谢。 【参考方案1】:我必须这样做才能让它工作。
RSpec.describe 'foos/index.html.erb', type: :view do
before do
controller.singleton_class.class_eval do
def current_user
User.find_by(username: 'schmoe')
end
helper_method :current_user
end
render
end
...
end
【讨论】:
【参考方案2】:因此,帮助方法的解决方案是存根它们。我不太喜欢这个解决方案,因为我认为它是一个错误,但它是做需要做的事情的方法。
【讨论】:
所以,您需要向我们展示如何您将其存根。我需要完成同样的事情,但你没有给出答案。请说明您如何/在何处存根,以便视图拾取它。以上是关于使用 rspec 测试视图 - 渲染视图时帮助文件中未定义的 current_user的主要内容,如果未能解决你的问题,请参考以下文章
rspec 使用 draper Decorator 测试视图