【问题标题】:Can't get my rspec test to pass无法通过我的 rspec 测试
【发布时间】:2015-09-22 22:14:42
【问题描述】:

我想通过一个测试,但我无法通过,我是新手。

这是我的 git 存储库的链接https://github.com/FrankWiebe/nameofapp

失败消息如下所示:

1) UsersController GET #show No user is logged in redirects to login
     Failure/Error: expect(response).to redirect_to(root_path)
       Expected response to be a <redirect>, but was <200>
     # ./spec/controllers/users_controller_spec.rb:24:in `block (4 levels) in <top (required)>'

这是代码:

require 'rails_helper'

describe UsersController, :type => :controller do

    before do
        @user = User.create(email: "doe@example.com", password: "1234567890")
    end

    describe "GET #show" do
        context "User is logged in" do
            before do
                sign_in @user
            end
            it "loads correct user details" do
                get :show, id: @user.id
                expect(response).to have_http_status(200)
                expect(assigns(:user)).to eq @user
            end
        end

        context "No user is logged in" do
           it "redirects to login" do
             get :show, id: @user.id
             expect(response).to redirect_to(root_path)
           end
        end
    end
end

【问题讨论】:

  • 失败信息是什么?
  • 添加了失败信息。
  • 您的 UsersController 中的 load_and_authorize_resource 定义在哪里?
  • 它在 users_controller.rb 的第三行还是你的意思是在 users_controller_spec.rb 文件中?因为它不在里面。

标签: ruby-on-rails rspec


【解决方案1】:

也许@user 在从一个测试登录到下一个测试时进行,所以第二个节目成功了。尝试在第一次测试中签署用户。

由于情况并非如此,请检查您的 config/routes.rb。 需要登录的资源应该包含在 do...end

authenticate(:user) do
  resources :user
  ...other stuff
end

【讨论】:

  • 尝试添加authenticate(:user) 还是同样的错误,除非这是错误的authenticate(:user) do resources :users end
猜你喜欢
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-24
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
相关资源
最近更新 更多