相关疑难解决方法(0)

测试使用Devise和RSpec的视图

我想在将Devise的user_signed_in?方法添加到相关的视图模板后,尝试获得之前传递的rspec"视图规范" .模板看起来像这样:

<% if user_signed_in? %>
  Welcome back.
<% else %>
  Please sign in.
<% endif %>
Run Code Online (Sandbox Code Playgroud)

该视图规范经过看起来是这样的:

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
Run Code Online (Sandbox Code Playgroud)

添加调用后产生的错误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 …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails devise

23
推荐指数
1
解决办法
4932
查看次数

使用rspec测试设计视图

我已经生成了Devise的视图rails g devise:views,现在想测试它们.

这就是我想出的:

require 'spec_helper'

describe "devise/sessions/new" do
    before do
        render
    end

    it "renders the form to log in" do
        rendered.should have_selector("form", action: user_session_path, method: :post) do |form|

        end
    end
end
Run Code Online (Sandbox Code Playgroud)

对于渲染语句,它给了我undefined local variable or method 'resource'.谷歌搜索后我发现我应该添加

@user.should_receive(:resource).and_return(User.new)
Run Code Online (Sandbox Code Playgroud)

在渲染语句之前 - 但它仍然给我相同的错误,我不确定如何使用它.

我究竟做错了什么?谢谢你的帮助.

authentication tdd rspec ruby-on-rails devise

12
推荐指数
4
解决办法
2349
查看次数

标签 统计

devise ×2

rspec ×2

ruby-on-rails ×2

authentication ×1

tdd ×1