Kev*_*n K 16 rspec ruby-on-rails devise-confirmable factory-bot
使用rails,devise,rspec和factorygirl:
试图为我的网站创建一些测试.我正在使用确认模型进行设计,因此当我使用FactoryGirl创建用户时,用户未得到确认.
这是我的工厂.rb:
FactoryGirl.define do
factory :user do
full_name "Aren Admin"
email "aren@example.com"
password "arenaren"
password_confirmation "arenaren"
role_id ADMIN
end
end
Run Code Online (Sandbox Code Playgroud)
这是我的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
Run Code Online (Sandbox Code Playgroud)
我收到错误,因为用户未得到确认.通过搜索我很确定我需要使用'确认'方法!并且它属于factories.rb文件,但我不知道在哪里放它.
aur*_*bee 34
您还可以按如下方式设置confirmed_at属性.适合我:
FactoryGirl.define do
factory :user do
full_name "Aren Admin"
email "aren@example.com"
password "arenaren"
password_confirmation "arenaren"
role_id ADMIN
confirmed_at Time.now
end
end
Run Code Online (Sandbox Code Playgroud)
Joe*_*ejr 24
更好的是,执行以下操作(然后您不需要为每个测试套件创建一个前置过滤器)
Factory.define :confirmed_user, :parent => :user do |f|
f.after_create { |user| user.confirm! }
end
Run Code Online (Sandbox Code Playgroud)
在这里找到:https: //stackoverflow.com/a/4770075/1153149
编辑以添加未弃用的语法
FactoryGirl.define do |f|
#Other factory definitions
factory :confirmed_user, :parent => :user do
after_create { |user| user.confirm! }
end
end
Run Code Online (Sandbox Code Playgroud)
编辑01/27再次更新语法
FactoryGirl.define do
#Other factory definitions
factory :confirmed_user, :parent => :user do
after(:create) { |user| user.confirm! }
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7066 次 |
| 最近记录: |