2013-10-16 9 views
6

अरे मैं एक परीक्षण है कि इसरेल 4 परीक्षण उपयोगकर्ता प्रारंभ हमेशा खाली है

test 'create account' do 
    if User.create(email: '[email protected]', password: 'blahblah') 
     assert true 
    else 
     assert User.msg 
    end 
end 

तरह लग रहा है लेकिन मैं इस तरह एक त्रुटि संदेश प्राप्त हो रहा है जब मैं इसे चलाने के लिए प्रयास करें:

1) Error: 
UserTest#test_create_account: 
ActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "index_users_on_email" 
DETAIL: Key (email)=() already exists. 
: INSERT INTO "users" ("created_at", "updated_at", "id") VALUES ('2013-10-16 21:59:54', '2013-10-16 21:59:54', 298486374) 

यह मुझे लगता है कि मैंने ईमेल शुरू नहीं किया था, लेकिन जैसा कि मैं समझता हूं कि इसे उपरोक्त मेरे निर्माण के साथ शुरू किया जाना चाहिए। मैं मजबूत पैरा का उपयोग कर रहा हूं इसलिए मेरे पास कोई attr_accessable सक्षम नहीं है और मैं इसे चला सकता हूं। क्या किसी को भी इसका कारण पता है? यदि आप और जानकारी चाहते हैं तो मुझे बताएं।

+0

आप निश्चित रूप से अपने ईमेल विशेषता पर एक अद्वितीय मान्यता है। यह एक त्रुटि उठा रहा है क्योंकि [email protected] पहले से ही किसी अन्य उपयोगकर्ता के साथ बनाया गया है और/या आपके डेटाबेस में सहेजा गया है। यदि आप ईमेल पैरामीटर बदलते हैं तो क्या आपको वही त्रुटि मिलती है? क्या होगा यदि आप इसे दो बार चलाते हैं? – JeremyS

+0

@ जेरेमीएस मदद के लिए धन्यवाद! मैंने इसे बदलने की कोशिश की और यहां तक ​​कि पूरी तरह अद्वितीय कुछ भी मुझे एक ही सटीक त्रुटि मिलती है। आप एसक्यूएल को देखें, तो यह केवल created_at, update_at, और आईडी की तरह लग रहा डाला जा रहा है – Lethjakman

+0

'ईमेल प्रयास करें:" #{SecureRandom.uuid}@test.com "' – house9

उत्तर

8

इस रेल मचान से अपने आप जेनरेट जुड़नार के कारण था। किसी भी कारण से यह अपने स्वयं के खंड के बजाय परीक्षणों के अंदर दिखाई देता है। जब मैंने फिक्स्चर तय किए तो यह त्रुटि प्रकट हो गई।

+0

हाय @ स्लेजकैमैन, मैं फैक्ट्री_गर्ल का उपयोग नहीं कर रहा हूं, फिर भी यह मुझे एक ही मुद्दा दे रहा है। कोई उपाय? – sunil

+0

अरे, मुझे पता है कि यह थोड़ा देर हो चुकी है, लेकिन मुझे कभी भी देर से बेहतर लग रहा था, है ना? यह सुनिश्चित करने के लिए दो बार जांचें कि कारखाने की लड़की आपके लिए एक स्थिरता उत्पन्न नहीं कर रही है, और सुनिश्चित करें कि आपका कारखाना डेटाबेस पक्ष पर एक अद्वितीय सत्यापन विफल नहीं करता है। वे दो मुद्दे हैं जिन्हें मैं जानता हूं जो इस त्रुटि का कारण बन सकते हैं। – Lethjakman

0

आप एक PostgreSQL अद्वितीय कुंजी उल्लंघन त्रुटि संदेश प्राप्त होता है, तो हो सकता है आपके प्राथमिक कुंजी सूचकांक, समन्वय से बाहर है जैसे डेटाबेस populating के बाद।

उपयोगकर्ता तालिका के लिए प्राथमिक कुंजी अनुक्रमणिका को फिर से सिंक करने के लिए ActiveRecord::Base.connection.reset_pk_sequence!('users') का उपयोग करें।

संबंधित मुद्दे