Mar*_*iwa 2 rspec ruby-on-rails devise ruby-on-rails-4
这是我的第一次观看测试.不确定我是否理解整个模拟/存根/双打概念,所以可能存在问题.
我正在测试简单的登录/注册| 用户名/注销链接.
application.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 %>
...
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
Failure/Error: render
ActionView::Template::Error:
undefined method 'authenticate' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
符合 <%= current_user.username %>
所以看起来这个用户名存根不起作用,任何想法在这里有什么问题?
我解决了这个问题
view.stub(:user_signed_in?) { true }
view.stub(:current_user) { FactoryGirl.build(:user, username: "Joe") }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1881 次 |
| 最近记录: |