使用rails、device、rspec和factorygirl:
尝试为我的站点创建一些测试。我使用可确认的设计模型,所以当我使用FactoryGirl创建用户时,用户不会被确认。
这是我的工厂。
FactoryGirl.define do
factory :user do
full_name "Aren Admin"
email "aren@example.com"
password "arenaren"
password_confirmation "arenaren"
role_id ADMIN
end
end
这是我的rspec测试文件:
require 'spec_helper'
describe "Admin pages" do
subject { page }
describe "home page" do
let(:user) { FactoryGirl.create(:user) }
before { visit admin_home_path }
it { should have_content("#{ROLE_TYPES[user.role_id]}") }
end
end
我收到一个错误,因为用户没有被确认。通过搜索,我非常确定我需要使用'confirm!'方法,并且它属于factories.rb文件,但我不确定将它放在哪里。
8条答案
按热度按时间insrf1ej1#
您还可以按如下方式设置confirmed_at属性。
jjhzyzn02#
更好的是,执行以下操作(这样就不需要为每个测试套件创建before filter)
在此处找到:https://stackoverflow.com/a/4770075/1153149
编辑以添加未过时的语法
编辑01/27以再次更新语法
cxfofazt3#
在您的
before
块中尝试user.confirm!
找到here
kuuvgm7e4#
这是为我工作的工厂
dohp0rv55#
将Devise可确认逻辑放入after(:build)回调中...
对我来说,将confirm!或skip_confirm!放在after(:create)块中会导致email参数的验证错误,并且不起作用。
6g8kf2rb6#
将此行添加到
User
工厂定义中:0md85ypi7#
您应该在调用
create
之前调用skip_confirmation!
,以便在用户上持久化。xghobddn8#
2023
不工作:
作品: