Rspec,设计,工厂女孩-如何通过Rspec控制器测试登录工厂用户?

Rspec,设计,工厂女孩-如何通过Rspec控制器测试登录工厂用户?,rspec,controller,devise,factory-bot,Rspec,Controller,Devise,Factory Bot,我有一个Posts控制器,我刚刚安装了Desive,可以快速方便地添加一些身份验证。在安装Desive之前,我已经为我的Posts控制器的“新”操作创建了一些测试。安装Desive之后,我的测试一直失败,直到我添加了 config.include Devise::TestHelpers, :type => :controller 行到我的spec_helper.rb文件 我也有电话 before_filter :authenticate_user!, :except => [:sh

我有一个Posts控制器,我刚刚安装了Desive,可以快速方便地添加一些身份验证。在安装Desive之前,我已经为我的Posts控制器的“新”操作创建了一些测试。安装Desive之后,我的测试一直失败,直到我添加了

config.include Devise::TestHelpers, :type => :controller
行到我的spec_helper.rb文件

我也有电话

before_filter :authenticate_user!, :except => [:show, :index]
在我的PostsController中

现在,当我运行测试时,它们都通过了,除了以下2项:

it "should be successful" do
     get :new
     response.should be_success
  end

  it "should have the right title" do
     get :new
     response.should have_selector('title', :content => @base_title + " | New post")
  end
我也在用工厂女孩。该错误是由before_筛选器except参数引起的。我需要能够与工厂用户在rspec中登录用户。如何在Rspec控制器测试中为工厂用户登录?如何定义工厂用户

我已经在我的工厂里试过了。rb:

Factory.define :user do |user|  
  user.name                  "Test User"
  user.email                 "user@example.com"
  user.password              "password"
  user.password_confirmation "password"
end
但是我得到了一个错误:

NoMethodError:
   undefined method `password_salt=' for #<User:0x00000103cac958>
命名错误:
未定义的方法“password\u salt=”用于#

任何帮助都将不胜感激。谢谢。

我强烈建议您删除控制器测试,改用Cucumber故事——RSpec对于测试面向用户的内容并不像Cucumber那样方便

在Cucumber中,您希望通过UI登录,以准确模拟用户将要执行的操作。我倾向于在控制器规范中做同样的事情,尽管有些人可能更喜欢模仿


至于
未定义的方法密码\u salt=
,您迁移了测试数据库吗?

ahhh完全忘了迁移测试数据库…现在我得到:
失败/错误:@user=create!(Factory(:user))ActiveRecord::RecordInvalid:验证失败:电子邮件不能为空,密码不能为空
是什么代码导致该错误?(错误消息应该有一个文件名和行号。)这是在(:each)do@user=create之前在我的帖子控制器
中的一个测试!(工厂(:用户))测试登录(@user)端
,应该是
工厂:用户
,而不是
创建!(工厂(:用户))
<代码>工厂已经创建了记录。我现在给你检查一下,没有足够的声望点数进行升级投票