2012-09-07 34 views
5

की आवश्यकता होती है के बाद भी मैं आईआरबी & में प्रवेश खोला:क्यों 'अपरिभाषित विधि `assert_equal' 'फेंक दिया जाता है' परीक्षण/इकाई '

require 'test/unit' 

लेकिन जब मैं assert_equal विधि का इस्तेमाल किया, मैं त्रुटि निम्न है: NoMethodError: undefined method 'assert_equal' for main:Object। 'परीक्षण/इकाई' की आवश्यकता के बाद भी यह क्यों हो रहा है?

उत्तर

9

assert_equalTest::Unit::TestCase के उप-वर्गों पर परिभाषित किया गया है, इसलिए केवल उस कक्षा में उपलब्ध हैं। वर्तमान विधियों पर उन विधियों को लोड करने के लिए आपको include Test::Unit::TestCase के साथ कुछ सफलता हो सकती है।

अधिक होने की संभावना आप बेहतर एक छोटी फाइल में अपने परीक्षण लेखन, और उन्हें ruby ./my_file.rb

5

इस तरह के दावे उपयोग किया जाता है के साथ चल रहा हो सकता है:

class Gum 
    def crisis; -42 end 
end 

# and as for testing: 

require 'test/unit' 

class GumTest < Test::Unit::TestCase 
    def test_crisis 
    g = Gum.new 
    assert_equal -42, g.crisis 
    end 
end 
+0

धन्यवाद, यह उपयोगी लग रहा है! – TDHM

6

आप बनाया माणिक त्रुटि परीक्षण

में उपयोग कर सकते हैं
raise "Message you want to throw when error happens" if/unless "Condition when you want to throw the error " 

या

आप जब दावे, की तरह उपयोग करने के लिए कोशिश कर त्रुटि संदेश मिलता है, तो "NoMethodError: अपरिभाषित विधि` के लिए मुख्य ज़ोर ': ऑब्जेक्ट ", तो यह अपनी स्क्रिप्ट के शीर्ष करने के लिए जोड़:

require "test/unit/assertions" 
include Test::Unit::Assertions 
संबंधित मुद्दे