나는이 실제로 독특한 만들 수있는 가장 유용한 방법이 아니다 것으로 나타났습니다 ...
그런 다음 충돌이 발생하고 고유 한 성가신 이메일을 수동으로 무시해야합니다.
종종 더 유용는 : 나는 임의의 숫자를 생성하여 대신 이동 정기적으로 콘솔에서 u = Factory :user
를 호출하기 때문에 임의의 숫자
를 사용합니다. 당신은 충돌을 피하기 위해 보장하지만, 실제로는 좀처럼 발생하지 않는 :
Factory.define :user do |user|
user.email {"user_#{Random.rand(1000).to_s}@factory.com" }
user.password{ "secret" }
end
N.B. FactoryGirl (https://github.com/thoughtbot/factory_girl/issues/219](see 여기)의 충돌 (버그?) 때문에 rand() 대신 Random.rand
을 사용해야합니다.
이렇게하면 데이터베이스에 이미 팩토리 생성 사용자가 있는지 여부에 관계없이 명령 줄에서 자유롭게 사용자를 만들 수 있습니다. 이메일 테스트를 만들기위한
추가 선택 당신은 종종 특정 사용자에 의한 행동이 다른 사용자에게 이메일을 유발하는지 확인하려면 테스트 이메일에 도착하면
쉽게.
Robin Hood
으로 로그인하고 Maid Marion
으로 이메일을 보내신 후받은 편지함으로 이동하여 확인하십시오. 받은 편지함에 표시되는 내용은 [email protected]
입니다. 대체 누구야?
전자 메일이 예상 한대로 송수신되었는지 여부를 확인하려면 데이터베이스로 돌아 가야합니다. 다시 이것은 약간의 고통입니다.
대신에 임의의 숫자와 결합 된 팩토리 사용자의 이름을 사용하여 이메일을 생성하는 것이 좋습니다. 이렇게하면 누가 어떤 일이 일어나고 있는지 쉽게 확인할 수 있습니다 (또한 충돌이 사라질 가능성이 거의 없습니다). .gsub(/[^a-zA-Z1-10]/, '')
: 위조자가 가끔 이메일 친화적되지 않습니다 (마이크 오도넬을) 우리가 허용되는 문자 허용 목록을 할 필요가 이름을 생성하기 때문에, Factory.define :user do |user|
user.first_name { Faker::Name::first_name }
user.last_name { Faker::Name::last_name }
user.email {|u| "#{u.first_name}_#{u.last_name}_#{Random.rand(1000).to_s}@factory.com" }
end
마지막으로 우리가 얻을 이름을 생성하기 위해 위조자 보석 (http://faker.rubyforge.org/)를 사용하여
Factory.define :user do |user|
user.first_name { Faker::Name::first_name }
user.last_name { Faker::Name::last_name }
user.email {|u| "#{u.first_name.gsub(/[^a-zA-Z1-10]/, '')}_#{u.last_name.gsub(/[^a-zA-Z1-10]/, '')}_#{Random.rand(1000).to_s}@factory.com" }
end
이 우리에게 등 [email protected]
및 [email protected]
다음
이 문제도 발생합니다. 전자 메일 필드에 시퀀스를 추가 했으므로 이론적으로 Factory (: user)에 전화 할 때마다 변경됩니다. 나는 그 자리에 있고 당신이 가진 문제에 아직도 달려있다. – someoneinomaha
나는 같은 문제가 있었다. 나는 FactoryGirl이 비참하게 실패하고 아마도 예외 (아마도 정리를 피함)를 던졌던 이전 테스트에서 나의 테스트 데이터베이스에 나쁜 데이터를 남겼다는 것을 알아 차렸다. RAILS_ENV = 테스트 bin/rake db : drop RAILS_ENV = 테스트 bin/rake db : 만들기 RAILS_ENV = 테스트 bin/rake db : 마이그레이션 ' 이렇게하면 이전 데이터가 모두 지워집니다. 희망이 도움이 @ somomeinomaha – Joel