那么我们如何解决初始化函数中的错误,需要采取哪些措施来消除此错误
这是Factories / user.rb
FactoryGirl.define do
factory :user do |u|
u.first_name Faker::Name.first_name
u.last_name Faker::Name.last_name
u.email Faker::Internet.email
u.username Faker::Name.name
u.title Faker::Name.title
u.password "hellohello"
u.password_confirmation "hellohello"
end
end
这是模式规范模型/ user_spec.rb
require 'rails_helper'
RSpec.describe User, :type => :model do
user = ''
describe "create" do
user = FactoryGirl.create(:user)
end
#describe "validations"
describe "Count all the user" do
it "should have one item created before being created" do
#binding.pry
expect(User.all.count).to eq(1)
end
end
end
答案 0 :(得分:0)
改变这个:
u.first_name Faker::Name.first_name
u.last_name Faker::Name.last_name
u.email Faker::Internet.email
u.username Faker::Name.name
u.title Faker::Name.title
对此:
u.first_name {Faker::Name.first_name}
u.last_name {Faker::Name.last_name}
u.email {Faker::Internet.email}
u.username {Faker::Name.name}
u.title {Faker::Name.title}
这将导致Ruby每次重新评估对Faker的调用,每次都会生成各种值。
请注意,仍有可能发生冲突,因为Faker :: email每次都会生成相同的电子邮件。我建议使用序列代替具有唯一约束的字段。像这样:
sequence(:email) { |n| "person#{n}@example.com" }
sequence(:username, 1000) { |n| "user#{n}" }