我真的不明白建立关联。在 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: Validation failed: Email has been taken
看起来 user1 正在创建 2 次,一次在 log_in_user 中,第二次在 factory: association :user, factory: :user1
我是对的?如果是,我该如何解决这个问题?我想创建用户并在工厂产品中定义关联
最好的