मैं माइकल के आरओआर ट्यूटोरियल का पालन कर रहा हूं और उपयोगकर्ता प्रमाणीकरण प्रणाली बना रहा हूं। एक व्यवस्थापक निजीकरण है, जो उपयोगकर्ताओं को अन्य उपयोगकर्ताओं को हटाने की अनुमति देता है। एक निजीकृत व्यवस्थापक उपयोगकर्ता के रूप में लॉग इन करते समय उपयोगकर्ता सूची पृष्ठ पर विशेष 'हटाएं' लिंक दिखाई देते हैं। मेरा ऐप ठीक काम करता है लेकिन आरएसपीईसी परीक्षण मेरे लिए अज्ञात कारण के लिए विफल रहे हैं।प्रशासनिक 'हटाएं' लिंक के लिए रुपेक परीक्षण विफल हो जाते हैं। माइकल हार्टल का आरओआर 3.2 ट्यूटोरियल - अध्याय 9.4.2
मैंने परीक्षणों को दूसरी फ़ाइल spec/requests/sat_spec.rb
पर अलग कर दिया है और मैं इसे डीबग करने के लिए प्रिये मणि का उपयोग करने की कोशिश कर रहा हूं, लेकिन अब तक कोई सफलता नहीं है।
describe "delete links" do
describe "as admin user" do
let(:admin) { FactoryGirl.create(:admin) }
before do
sign_in admin
visit users_path
binding.pry
end
it { should have_link('delete', href: user_path(User.first)) }
it "should be able to delete another user" do
expect { click_link('delete') }.to change(User, :count).by(-1)
end
end
टेस्ट विफलताएं:
1) separated admin tests delete links as admin user
Failure/Error: it { should have_link('delete', href: user_path(User.first)) }
expected link "delete" to return something
# ./spec/requests/sat_spec.rb:25:in `block (4 levels) in <top (required)>'
2) separated admin tests delete links as admin user should be able to delete another user
Failure/Error: expect { click_link('delete') }.to change(User, :count).by(-1)
Capybara::ElementNotFound:
no link with title, id or text 'delete' found
# (eval):2:in `click_link'
# ./spec/requests/sat_spec.rb:28:in `block (5 levels) in <top (required)>'
# ./spec/requests/sat_spec.rb:28:in `block (4 levels) in <top (required)>'
क्या समस्या यहाँ या अधिक महत्वपूर्ण बात से है कि यह कैसे डिबग करने के लिए कर सकते हैं?
तुम मेरे कोड यहाँ https://github.com/tomek-rusilko/miniatury_katalog_2
जीज़ इतना स्पष्ट! मुझे बेवकूफ लगता है: डी बहुत बहुत धन्यवाद। समस्या हल करने से पहले 'FactoryGirl.create (: उपयोगकर्ता)' को सरल बनाना। पॉप-अप की एक और चीज है: क्यों 'फैक्टरीगर्ल.क्रेट (: उपयोगकर्ता)' काम करता है लेकिन 'चलो (: उपयोगकर्ता) {फैक्टरीगर्ल.क्रेट (: उपयोगकर्ता)}' नहीं? – tomruss
'let' का मूल्यांकन आलसी रूप से किया जाता है: जब तक आप' उपयोगकर्ता' 'चर का उपयोग नहीं करते हैं तब तक इसका ब्लॉक नहीं कहा जाएगा। यदि आप चाहते हैं कि आपका ब्लॉक तुरंत कॉल किया जाए तो 'चलो!' (विस्मयादिबोधक चिह्न के साथ) का प्रयोग करें। लेकिन मैं आपको ''पहले' ब्लॉक में अपना 'फैक्टरीगर्ल.क्रेट (उपयोगकर्ता)' रखने की सलाह दूंगा। – jdoe
हां, यह वही है जो मैंने किया: 'पहले (: सभी) {5. टाइम्स {फैक्टरीगर्ल.क्रेट (: उपयोगकर्ता)}}; के बाद (: सभी) {User.delete_all} '। दोबारा - मदद के लिए धन्यवाद। – tomruss