【发布时间】:2012-12-07 07:39:32
【问题描述】:
我真的不明白建立关联。在 spec_helper 我有
def log_in_user
user = User.find_by_name 'User1'
user = FactoryGirl.create :user1 unless user
sign_in user
end
在 rspec 中
let(:product) { FactoryGirl.build :product_A }
describe "GET confirm purchase" do
it "xxx" do
log_in_user
Product.should_receive(:find_active_by_id).with("1").and_return(product)
...
end
end
工厂.rb
FactoryGirl.define do
factory :user do
encrypted_password 'abcdef1'
confirmed_at Time.now
factory :user1 do
email 'user1@test.com'
name 'User1'
year 1984
end
end
factory :product do
factory :product_A do
name "product A"
association :user, factory: :user1
end
end
end
当我运行测试用例时发生异常: ActiveRecord::RecordInvalid:验证失败:电子邮件已被使用
看起来 user1 正在创建 2 次,一次在 log_in_user 中,第二次在 factory: association :user, factory: :user1 中
我是对的吗?如果是,我该如何解决这个问题?我想创建用户并在工厂产品中定义关联
最好的
【问题讨论】:
标签: ruby-on-rails-3 rspec factory-bot