【发布时间】:2010-04-23 09:08:24
【问题描述】:
我正在尝试使用FactoryGirl/shoulda 模拟会话(它与固定装置一起使用,但我在使用工厂时遇到问题)。我有以下工厂(用户登录和电子邮件都有unique 验证):
Factory.define :user do |u|
u.login 'quentin'
u.email 'quentin@example.com'
end
Factory.define :session_user, :class => Session do |ses|
ses.association :user, :factory => :user
ses.session_id 'session_user'
end
这是测试
class MessagesControllerTest < ActionController::TestCase
context "normal user" do
setup do
@request.session[:user_id]=Factory(:user).id
@request.session[:session_id]=Factory(:session_user).session_id
end
should "be able to access new message creation" do
get :new
assert_response :success
end
end
end
但是当我运行rake test:functionals 时,我得到了这个测试结果
1) Error:
test: normal user should be able to access new message creation. (MessagesControllerTest):
ActiveRecord::RecordInvalid: Validation failed: Account name already exists!, Email already exists!
这意味着当我在测试设置中引用它时,该记录已经存在于 db 中。这里有什么我不明白的吗? FactoryGirl 在启动时会在 db 中创建所有工厂吗?
rails 2.3.5/shoulda/FactoryGirl
【问题讨论】:
标签: ruby-on-rails shoulda factory-bot