加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 控制器规范未在我的工厂创建的用户中登录

发布时间:2020-12-17 03:02:06 所属栏目:百科 来源:网络整理
导读:我的课程控制器的控制器测试有问题.似乎设计没有正确登录我的用户.此控制器的所有生成的控制器测试仅失败. 我使用Factory-girl在users.rb中创建我的用户,如下所示…… FactoryGirl.define do factory :user do sequence :email do |n| "test#{n}@email.com"
我的课程控制器的控制器测试有问题.似乎设计没有正确登录我的用户.此控制器的所有生成的控制器测试仅失败.

我使用Factory-girl在users.rb中创建我的用户,如下所示……

FactoryGirl.define do
  factory :user do 
    sequence :email do |n| 
      "test#{n}@email.com"
    end
    password "password"
    password_confirmation "password"
  end
end

然后在我的courses_controller_spec.rb中,我按照以下模拟登录.

require 'spec_helper'
describe CoursesController do
  include Devise::TestHelpers

  before(:each) do
    #@request.env["devise.mapping"] = Devise.mappings[:user]
    user = Factory.create(:user)
    user.toggle!(:admin)
    sign_in user
  end

  describe "DELETE destroy" do
    it "redirects to the courses list" do
      course = Factory.create(:course)
      delete :destroy,{:id => course.to_param},valid_session
      response.should redirect_to(courses_url)
    end
  end

我得到了输出……

Failure/Error: response.should redirect_to(courses_url)
Expected response to be a redirect to <http://test.host/courses> but was a redirect to <http://test.host/users/sign_in>

请注意我在spec_helper.rb中也使用了以下内容

config.include Devise::TestHelpers,:type => :controller

我按照https://github.com/plataformatec/devise/wiki/How-To:-Controllers-and-Views-tests-with-Rails-3-%28and-rspec%29尝试了它

在我的请求规范中我可以创建用户并使用下面的登录工作正常,但我想让所有的控制器测试工作也

fill_in "Email",:with => user.email
fill_in "Password",:with => user.password
click_button "Sign in"

这里的任何帮助将不胜感激.

解决方法

我自己就是这么想的.从删除调用中删除valid_session.这似乎覆盖了使用设计测试助手定义的会话.

其他一切似乎都是正确的.保留所有设计设置代码,只需将规范中的删除行更改为:

delete :destroy,{:id => course.to_param}

我还在我之前的(:每个)块中保留了以下行,您注释掉了.不知道它做了什么:

@request.env["devise.mapping"] = Devise.mappings[:user]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读