मैं 15 TDD steps to create a Rails application मार्गदर्शिका का पालन कर रहा हूं - लेकिन एक समस्या में भाग गया है जिसे मैं हल नहीं कर सकता।मोचा मॉक एक अन्य टेस्ट में ले जाता है
class WordsControllerTest < ActionController::TestCase
test "should get learn" do
get 'learn'
assert_response :success
end
test "learn passes a random word" do
some_word = Word.new
Word.expects(:random).returns(some_word)
get 'learn'
assert_equal some_word, assigns('word')
end
end
वर्ड वर्ग मैं निम्नलिखित कोड है में: WordsController के कार्यात्मक परीक्षण के लिए, मैं निम्नलिखित कोड है
class Word < ActiveRecord::Base
def self.random
all = Word.find :all
all[rand(all.size)]
end
end
जब मैं परीक्षण चलाने, मैं निम्न त्रुटि का अनुभव (संक्षिप्तता के लिए छोटा):
1) Failure: unexpected invocation: Word(...).random() satisfied expectations:
- expected exactly once, already invoked once: Word(...).random()
मैं अन्य बातों की एक भीड़ के साथ परीक्षण के आदेश को बदलने को बदलने की कोशिश की है, लेकिन बार-बार मैं एक ही ट प्राप्त करना जारी टी विफलता - कि Word.random() पहले से ही लागू किया जा चुका है।
मैं रेल 3.0 बीटा 4 और मोचा 0.9.8 चला रहा हूं। मैंने अपनी समस्या के समाधान के लिए लंबे और कठिन खोज की है, लेकिन मुझे यह प्रतीत नहीं होता है। मैं रुबी/रेल के लिए नया हूं इसलिए भाषा और ढांचे से अपरिचित हूं।
अग्रिम धन्यवाद!
क्या टियरडाउन को परीक्षणों के बीच बुलाया जाना चाहिए? – pushmatrix
यदि 'मोचा' सही तरीके से लोड किया गया है, तो इसमें 'मोचा :: एपीआई # मोचा_एवरिफाइ' और 'मोचा :: एपीआई # मोचा_टेरडाउन' कहने के लिए परीक्षण ढांचे को बंदर-पैच किया जाएगा यानी आपको उन्हें स्पष्ट रूप से कॉल करने की आवश्यकता नहीं है। कारण मैं पूछ रहा था कि 'मोचा' की आवश्यकता कैसे थी, यह काम करना था कि चीजें सही क्रम में लोड की जा रही हैं, ताकि बंदर-पैचिंग सही ढंग से काम करे। –
यदि आप अपने परीक्षण चलाते समय 'MOCHA_OPTIONS = डीबग' को पर्यावरण चर के रूप में सेट करते हैं, तो आप देखेंगे कि कौन से टेस्ट फ्रेमवर्क सफलतापूर्वक बंदर-पैच किए जा रहे हैं। यदि आपको अभी भी इसमें समस्याएं आ रही हैं, तो मुझे बताएं कि डीबग आउटपुट क्या है और मुझे बताएं कि आप किस मोचा का उपयोग कर रहे हैं। धन्यवाद। –