FactoryGirl
/shoulda
을 사용하여 세션을 시뮬레이션하려고합니다 (조명기와 함께 작동했지만 공장 사용에 문제가 있습니다). 나는 공장 (사용자 로그인과 이메일 모두가 unique
검증) 다음과 같은 한 :공장 소녀가 언제 db로 개체를 만드나요?
Factory.define :user do |u|
u.login 'quentin'
u.email '[email protected]'
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로 생성합니까?
레일 2.3.5/했어야/FactoryGirl
하지만 내 코드에는 하나의 팩토리 (: 사용자) 언급이 있습니다. 왜 두 번 실행됩니까? (두 번째는 Factory (: session_user), Session 인스턴스 임) –
죄송합니다. 질문을 읽어야합니다 –