我尝试在之前通过的rspec“视图规范”中添加Devise的user_signed_in?
方法以使其通过。模板大致如下:
<% if user_signed_in? %>
Welcome back.
<% else %>
Please sign in.
<% endif %>
之前通过的视图规范看起来像这样:
require "spec_helper"
describe "home/index.html.erb" do
it "asks you to sign in if you are not signed in" do
render
rendered.should have_content('Please sign in.')
end
end
在添加了调用 user_signed_in?
后,它产生的错误是: 1) home/index.html.erb asks you to sign in if you are not signed in
Failure/Error: render
ActionView::Template::Error:
undefined method `authenticate' for nil:NilClass
# ./app/views/home/index.html.erb:1:in `_app_views_home_index_html_erb__1932916999377371771_70268384974540'
# ./spec/views/home/index.html.erb_spec.rb:6:in `block (2 levels) in <top (required)>'
在网上可以找到很多关于这个错误的参考资料,但我还没有找到一个足够详细的答案来使我的测试再次通过。我认为问题与视图有关(该视图正在从任何模型/控制器中隔离地进行测试),它没有一些关键的Devise基础设施可用。感谢您的建议。
此外,一旦测试通过,如何测试其他路径(用户已经登录)? 我认为这会非常相似。谢谢。
type
来确定要运行哪些Example。 - Jared Beck