gpt4 book ai didi

ruby-on-rails - 查看测试和 Devise 的 current_user

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

这是我的第一个 View 测试。不确定我是否理解整个模拟/ stub / double 概念,所以可能存在问题。

我正在测试简单的登录/注册 |用户名/注销链接。

应用程序.html.erb:

  ...
<ul>
<% if user_signed_in? %>
<li>
<%= link_to('Logout', destroy_user_session_path, :method => :delete) %>
<%= current_user.username %>
</li>
<% else %>
<li>
<%= link_to('Login', new_user_session_path) %>
<%= link_to('Sign up', new_user_registration_path) %>
</li>
</ul>
<% end %>
...

application.hmtl.erb_spec.rb:

require 'spec_helper'

describe "layouts/application.html.erb" do

context "when user is signed in" do
before :each do
view.stub(:user_signed_in?) { true }

current_user = double()
current_user.stub(:username) { "Joe" }
render
end

it "displays logout link" do
expect(rendered).to have_link 'Logout'
end

it "displays username" do
expect(rendered).to have_content 'Joe'
end

...

end
end

我得到一个错误:

 Failure/Error: render
ActionView::Template::Error:
undefined method 'authenticate' for nil:NilClass

符合<%= current_user.username %>

所以看起来这个用户名 stub 不起作用,知道这里出了什么问题吗?

最佳答案

我解决了这个:

  view.stub(:user_signed_in?) { true }
view.stub(:current_user) { FactoryGirl.build(:user, username: "Joe") }

关于ruby-on-rails - 查看测试和 Devise 的 current_user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19641117/

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