【发布时间】:2018-03-09 19:16:07
【问题描述】:
我正在使用 FactoryBot 为我的 Rspec 测试创建假数据。我的用户工厂如下:
FactoryBot.define do
factory :user do
sequence(:name) { |n| "User#{n}" }
sequence(:email) { |n| "user#{n}@email.com" }
end
end
创建用户会在我的 User 模型中自动创建客户端作为后续操作:
def initialize_client
self.client = self.build_client
self.client.setup_stripe
self.save
end
我有一个客户工厂:
FactoryBot.define do
factory :client do
user
end
end
我创建了一个 Rspec 文件来测试 client 在创建用户时是否正确构建:
describe User, type: :model do
user = FactoryBot.create(:user)
end
但这会引发错误:
raise_record_invalid': Validation failed: Email has already been taken (ActiveRecord::RecordInvalid)
即使运行 FactoryBot.create(:user) 会创建已接受的客户端和用户。我不确定此时我需要更改什么
【问题讨论】:
-
只是个疯狂的想法。 1. 杀死你的服务器 2. 运行 rails db:setup 3. 运行 rails db:setup RAILS_ENV=test
-
@KickButtowski 只是尝试这样做,没有帮助:/
-
即使这个 rails db:setup RAILS_ENV=test?
-
@KickButtowski 好的,我刚刚用
RAILS_ENV尝试过,它可以工作。不过这很奇怪,如果您可以添加它,我会接受它作为答案。你介意解释我为什么要这样做吗?泰 -
为您发布答案。希望我的解释足以让您开始。
标签: ruby-on-rails ruby-on-rails-4 rspec factory-bot rspec-rails